unix中是否有任何命令或方法可以从所有文件中删除特定行。
示例: 我有300个.c文件,其中文件头有作者姓名。我需要从所有文件中删除此行。我希望在oneshot中做到这一点。
如果有任何命令或方法,请帮助我。
谢谢..
答案 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
供将来参考