3ks*_*stc 23 shell bash sed text-processing
我有一个想要操作的字符串。字符串是H08W2345678我如何能够操作它以便输出只是W2345678?
同样,如果我想删除最后 4 个字符H08W2345678以便我知道我将H08W234如何执行此操作?
jas*_*yan 34
只需使用 bash (或ksh93该语法来自 或 的地方zsh):
string="H08W2345678"
echo "${string:3}"
W2345678
echo "${string:0:-4}"
H08W234Run Code Online (Sandbox Code Playgroud)
有关字符串操作的更多信息,请参阅 Wooledge wiki 。
hee*_*ayl 13
$ echo "H08W2345678" | sed 's/^.\{3\}//'
W2345678
Run Code Online (Sandbox Code Playgroud)
sed 's/^.\{3\}//'将找到前三个字符^.\{3\}并替换为空白。Here^.将匹配字符串开头的任何字符(^表示字符串的开头),\{3\}并将匹配前一个模式精确 3 次。所以,^.\{3\}将匹配前三个字符。
$ echo "H08W2345678" | sed 's/.\{4\}$//'
H08W234
Run Code Online (Sandbox Code Playgroud)
同样,sed 's/.\{4\}$//'将最后四个字符替换为空白($表示字符串的结尾)。
如何从字符串前面“删除”/删除字符?
我有一个想要操纵的字符串。该字符串是 H08W2345678 我如何才能操作它,以便输出只是 W2345678?
echo "H08W2345678" | cut -c 4-
Run Code Online (Sandbox Code Playgroud)
同样,如果我想删除 H08W2345678 中的最后 4 个字符,以便得到 H08W234,我该怎么做?
echo "H08W2345678" | cut -c -7
Run Code Online (Sandbox Code Playgroud)