根据条件删除行

时间:2011-09-13 04:28:17

标签: bash sed awk

我只想删除包含查询中所选行数的行。我的意思是最后一行。请帮忙。

[root@machine-test scripts]# ./hit_ratio.sh 
     193830           432           
     185260           125

2 rows selected.

6 个答案:

答案 0 :(得分:4)

如果您知道要删除最后一行,但不想删除包含类似文本的其他行,或者您不知道它将包含哪些文本,sed是唯一合适的。

./hit_ratio.sh | sed '$d' 

答案 1 :(得分:3)

如果你想要的只是根据模式删除一行,你不需要sed的力量或awk的超能力。您可以使用:

./hit_ratio.sh | grep -v ' rows selected.'

可以<{1}}和awk进行,但这有点像试图用热核弹头杀死苍蝇:

sed

答案 2 :(得分:2)

或者,使用您的SQL脚本执行某些操作。有时,启用set nocount on语句会消除“受影响的行”行。

答案 3 :(得分:1)

我的第一个建议是不要输出那行,在这里列出hit_ratio.sh也许可以修改它不输出那行

无论如何,如果您必须删除 最后一行,最简单的方法是使用head:

./hit_ratio.sh  | head -n -1

使用-n和负数使头部打印除输入的最后N行之外的所有行

答案 4 :(得分:0)

使用head获取文件的第一行N - 1行,其中N是文件的长度(使用wc -l计算)

head -n $(($(cat lipsum.log | wc -l) - 1)) lipsum.log有效

答案 5 :(得分:0)

管道穿透

sed -e '/\w*[0-9]\+ rows\? selected/d'