Unix命令从所有文件中删除特定行

时间:2014-01-13 11:23:35

标签: linux unix

unix中是否有任何命令或方法可以从所有文件中删除特定行。

示例: 我有300个.c文件,其中文件头有作者姓名。我需要从所有文件中删除此行。我希望在oneshot中做到这一点。

如果有任何命令或方法,请帮助我。

谢谢..

4 个答案:

答案 0 :(得分:2)

假设您有查找这些.c文件的模式,您可以使用Sed - Delete a line containing a specific string中的一些解决方案:

find . -type f -name "your_pattern.c" -exec sed -i '/pattern/d' {} \;

答案 1 :(得分:0)

使用此命令

find -iname "*.c" -exec sed -i '/author/'d {} \;

首先查找命令将找到所有c文件,然后sed将删除文件中的作者行。

答案 2 :(得分:0)

perl -i.bak -pne "s/^whatever it is your line to delete$//" files

创建没有扩展名为.bak的行的文件。在一个文件上尝试它,如果你有足够的信心覆盖所有文件,你可以通过以下方式完成:

perl -i -pne "s/^whatever it is your line to delete$//" files

这将覆盖原始文件。其他类似的选择是:

perl -i -ne "print if !/^whatever it is your line to delete$/" files

perl -i -pne "next if /^whatever it is your line to delete$/" files

确保将行从'^'(行的开头)定义为'$'(行尾),否则您可能会删除具有部分匹配的类似行。

答案 3 :(得分:0)

试试这个,

grep -lr "<Authorname keyword>" *.c|xargs sed -i '0,/<Authorname>/d' 

grep - 列出匹配关键字''的所有c文件,然后sed - 删除与关键字匹配的第一行

浏览网站sed examples

供将来参考