deleting string up to the first occurrence of cert

2019-08-12 06:42发布

问题:

Is there a way to delete all the characters up to the first occurrence of certain character and that character too.

123:abc
12:cba
1234:cccc

and the output would be:

abc
cba
cccc

回答1:

You could use cut:

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


回答2:

Using sed:

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

Or using awk:

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


回答3:

use awk

echo "123:abc" | awk -F ":" '{print $2}'
  • -F means to use : as the separator to split the string.
  • {print $2} means to print the second substring.


回答4:

If the data is in a variable, you can use parameter expansion:

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

The # means to remove the shortest pattern of *: (anything followed by a colon) from the front of the string, as you said in your requirement "delete all the characters up to the first occurrence of certain character + that character", not to get the second field where the delimiter is the colon.