2015-08-31 114 views
1

我想从文件中删除一些文本,我需要使用一个字符串找到行号,然后从该行删除该文件的结尾。从文件bash中删除最后N行

我试过使用sed并使用字符串作为搜索字词输出到一个新文件,但它不保留行,它只是将整个文件打印在一行上,这对脚本的其余部分依赖于该文件没有帮助行号。 到目前为止我的代码是:

file=$(sed -ie '/<div class="col-wrapper">/,$d' < file1.txt) 
echo $file > file.txt 

回答

2

你可以使用内联编辑在sed

sed -i '/<div class="col-wrapper">/,$d' file1.txt 

到更改保存到file1.txt

+1

该死的,我以为我试过了!现在我觉得完全愚蠢!非常感谢!! – JONAS402

1

这可能为你工作(GNU SED):

sed -i '/<div class="col-wrapper">/Q' file1.txt 
+0

Anubahava的回答很好,你能解释一下GNU sed和普通sed之间的区别吗? – JONAS402

+0

@ JONAS402 GNU sed具有addional命令,参见[这里](http://www.gnu.org/software/sed/manual/sed.html#Extended-Commands)。在这种情况下,'Q'退出文件的处理而不打印它匹配的地址。如果文件很长,并且靠近文件前面的匹配,也许是更有效的解决方案。 – potong