删除有条件的行

时间:2012-03-09 02:38:53

标签: regex sed

ALTER TABLE variable ADD KEY somekey name

我想从文本文件中删除该行,并且下面提到的sed按预期工作。

sed '/ADD\ KEY/d' 

但是“ADD KEY”这个词可能在文本文件的其他地方,我不想删除该行。

如果以“ALTER TABLE”字开头,我该如何删除所有“ADD KEY”行?

3 个答案:

答案 0 :(得分:1)

做的:

sed '/^ALTER TABLE/{/ADD\ KEY/d}'

第一个/^ALTER TABLE/检查以ALTER TABLE开头的行,然后继续/ADD\ KEY/d,如果这是真的。

答案 1 :(得分:1)

 sed '/ALTER TABLE .* ADD KEY .*/d' FILE 

也应该做好这份工作。顺便说一下,你不需要掩盖空白。

答案 2 :(得分:1)

您需要编辑正则表达式以匹配您需要的行,即:

sed '/^ALTER\ TABLE.*ADD\ KEY/d'

是 - 以" ALTER TABLE"开头的行 - 然后是0或更多'任何'
- 然后是" ADD KEY"