如何从字符串前面“删除”/删除字符?

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}"
H08W234
Run 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\}$//'将最后四个字符替换为空白($表示字符串的结尾)。


aex*_*exl 5

如何从字符串前面“删除”/删除字符?

我有一个想要操纵的字符串。该字符串是 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)