替换sed

时间:2018-01-22 09:52:47

标签: sed command-line

我有一个标签文件,其中有两列,如下所示

BB_12  100_AA
BB_13  101_AB 
BB_14  102_AD
BB_15  103_AC

我希望删除第二列中的number_(无数字替换number_)。为此我尝试使用sed替换以下方式失败。

sed 's/\d+\_//g' infile
sed 's/(\d+\_)//g' infile

但没有一项调整有效。它似乎没有在第二列中搜索。如何修改?预期的输出是

BB_12  AA
BB_13  AB 
BB_14  AD
BB_15  AC

提前致谢。

2 个答案:

答案 0 :(得分:1)

您可以使用 sed

处理最后一列
sed -E 's/[^ ]*_([^ ]*) *$/\1/' file

输出:

BB_12  AA
BB_13  AB
BB_14  AD
BB_15  AC

Awk 替代方案:

awk '{ sub(/^[^ ]+_/, "", $2) }1' OFS='\t' file

答案 1 :(得分:0)

以下简单的sed可能对您有帮助。

sed 's/\([^ ]*\) \([^_]*\)_\(.*\)/\1 \3/g'   Input_file

输出如下。

BB_12 AA
BB_13 AB
BB_14 AD
BB_15 AC