在行==“xxxxxxx”之后删除文件内容

时间:2010-12-30 07:38:09

标签: linux bash

我有一堆我需要清理的文件。我需要删除等于某条线的所有行(该行也应该删除)。

我怎样才能在bash中做到这一点?

我只需要如何删除行的示例,我可以自己循环所有文件。

3 个答案:

答案 0 :(得分:2)

最容易告诉sed在看到它时退出。

sed -n '/xxxxxxx/q;p' input.txt

答案 1 :(得分:0)

您可以使用Perl:

perl -i.bak -pe 'exit if /xxxxxxx/' filename.txt ...

这将替换文件。

答案 2 :(得分:0)

'sed'是最简单的方法,但如果您有更复杂的要求 你也可以使用'awk'。

对于这种特殊情况,请创建一个文件'foo.awk',其中包含以下内容:

{
    if ($0 == "xxxxxx")
            exit
    else
            print $0
}

并从shell调用以下命令:

awk -f foo.awk $FILE_NAME