保留特定字符之前和之后的字符

保留特定字符之前和之后的字符

我想保留特定字符之前和之后的字符(在本例中为_)。我尝试了 cut 和 sed,但是我删除了字符之前或字符之后的部分。

我的输出是这样的

7_38    98.97
7_37    98.59
7_36    98.79
7_35    98.93
7_34    98.57
7_33    99.70
7_32    99.13

我想删除“_”后面的数字并将第二列保留为这样的输出

7   98.97
7   98.59
7   98.79
7   98.93
7   98.57
7   99.70
7   99.13

答案1

看起来您想删除_其后的每个非空白字符,因此:

sed 's/_[^[:blank:]]*//' < file

答案2

你试过用 awk 吗?这应该能让你到达你想要去的地方:

awk '/_/ {gsub("_.*","",$1); print}' < input.txt

答案3

用 awk功能:

awk '{ sub("_.*","",$1) }1' OFS='\t' file

输出:

7   98.97
7   98.59
7   98.79
7   98.93
7   98.57
7   99.70
7   99.13

答案4

您可以使用多个字符作为字段分隔符(空格和下划线)并且仅打印字段 1 和 3:

awk -F'_| +' '{print($1,$3)}' file

相关内容