删除string直到某个字符的第一个出现

有没有办法删除所有字符,直到第一次出现某个字符和那个字符。

123:abc 12:cba 1234:cccc 

和输出将是:

 abc cba cccc 

你可以使用cut

 $ cut -d":" -f2- myfile.txt 

使用sed:

 sed 's/^[^:]*://' file abc cba cccc 

或者使用awk:

 awk -F: '{print $2}' file abc cba cccc 

使用awk

 echo "123:abc" | awk -F ":" '{print $2}' 
  • -F表示使用:作为分隔符来分割字符串。
  • {print $2}表示打印第二个子字符串。

如果数据在变量中,则可以使用参数扩展:

 $ var=123:abc $ echo ${var#*:} abc $ 

#意味着从字符串的前面删除最短的*:任何后面跟一个冒号)模式,正如你在要求中所说的:“删除所有字符,直到第一次出现某个字符+该字符”,而不是获取分隔符是冒号的第二个字段。