如果使用awk或sed发生条件,则删除一行

时间:2013-05-09 08:48:45

标签: linux unix sed awk

只需要你的帮助。如果使用awk或sed发生此格式,我想删除一行:

BSC+number     BSC+number

例如:

BSC112         BSC112
core           tag
red            blue
BSC113         BSC114
flu            joke
输出应该是:

core           tag
red            blue 
flu            joke  

提前感谢您的帮助。

4 个答案:

答案 0 :(得分:5)

一种方式:

$ sed '/^BSC[0-9]\+\s\+BSC[0-9]\+$/d' file 
core           tag
red            blue 
flu            joke 

您可以将-i选项与sed一起使用,将更改存储回文件:

$ sed -i '/^BSC[0-9]\+\s\+BSC[0-9]\+$/d' file

答案 1 :(得分:5)

您也可以使用grep:

执行此操作
grep -v 'BSC[0-9]\+[[:space:]]\+BSC[0-9]\+' infile

输出:

core           tag
red            blue 
flu            joke 

答案 2 :(得分:3)

另一种方式:

perl -lne 'print unless(/BSC\d+\s+BSC\d+/)' your_file

试验:

> cat temp
BSC112         BSC112
core           tag
red            blue
BSC113         BSC114
flu            joke
> perl -lne 'print unless(/BSC\d+\s+BSC\d+/)' temp
core           tag
red            blue
flu            joke

答案 3 :(得分:0)

awk'!/ BSC / {print}'输入>输出