我想保留特定字符之前和之后的字符(在本例中为_)。我尝试了 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