How to extract the first two characters of a string in shell scripting?

前端 未结 14 2101
-上瘾入骨i
-上瘾入骨i 2020-12-07 13:54

For example, given:

USCAGoleta9311734.5021-120.1287855805

I want to extract just:

US
14条回答
  •  臣服心动
    2020-12-07 14:06

    You've gotten several good answers and I'd go with the Bash builtin myself, but since you asked about sed and awk and (almost) no one else offered solutions based on them, I offer you these:

    echo "USCAGoleta9311734.5021-120.1287855805" | awk '{print substr($0,0,2)}'
    

    and

    echo "USCAGoleta9311734.5021-120.1287855805" | sed 's/\(^..\).*/\1/'
    

    The awk one ought to be fairly obvious, but here's an explanation of the sed one:

    • substitute "s/"
    • the group "()" of two of any characters ".." starting at the beginning of the line "^" and followed by any character "." repeated zero or more times "*" (the backslashes are needed to escape some of the special characters)
    • by "/" the contents of the first (and only, in this case) group (here the backslash is a special escape referring to a matching sub-expression)
    • done "/"

提交回复
热议问题