awk使用正则表达式删除子字符串

时间:2015-07-22 18:27:13

标签: regex bash awk sh

我有一个管道分隔文件,如下所示:

34ab1 | aaa bbb   ccc   fff  vf | 2015-01-01
35ab1 | aaa bbb   ccc dddefd ddff  ssss   fff  vi | 2015-01-01

我想替换以bbb开头并以fff结尾的所有内容。

我用过这个:

BEGIN {
    FS = OFS = "|"
}
{
   sub(/[0-9].*[0-9]/, "", $2); sub(/bbb.*fff/, "", $2);
   print
}

数字的正则表达式部分有效,但正则表达式的第二部分没有。

我希望输出:

34ab1 | aaa   vf | 2015-01-01
35ab1 | aaa   vi | 2015-01-01

1 个答案:

答案 0 :(得分:2)

对两者使用单个gsub函数。

BEGIN {
    FS = OFS = "|"
}
{
gsub(/[0-9].*[0-9]|bbb.*fff/, "", $2);
print
}