是否有任何命令或unix中刪除特定行的方法?Unix命令從所有文件中刪除特定行所有文件
例如: 我有一些300個.c文件,其中文件頭有作者姓名。我需要從所有文件中刪除這一行。我期待在onehot中做到這一點。
如果有任何命令或方式請幫助我。
謝謝..
是否有任何命令或unix中刪除特定行的方法?Unix命令從所有文件中刪除特定行所有文件
例如: 我有一些300個.c文件,其中文件頭有作者姓名。我需要從所有文件中刪除這一行。我期待在onehot中做到這一點。
如果有任何命令或方式請幫助我。
謝謝..
假如你有一個模式來查找這些.c
文件,你可以從Sed - Delete a line containing a specific string使用一些解決方案:
find . -type f -name "your_pattern.c" -exec sed -i '/pattern/d' {} \;
使用此命令
find -iname "*.c" -exec sed -i '/author/'d {} \;
首先找到命令會找到所有的c文件,然後sed將刪除文件中的作者行。
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
確保你定義從「^」(行begining)以「$」(行尾)線,否則你可能會刪除有部分匹配類似的思路。
試試這個,
grep -lr "<Authorname keyword>" *.c|xargs sed -i '0,/<Authorname>/d'
grep的 - 名單匹配關鍵字「位置的所有C文件」,然後用sed - 刪除關鍵字
通過網站sed examples去匹配一號線
爲你將來的引用
您可以使用Perl這樣做,但請嘗試* *的東西或要求這樣做之前,一個粗略的搜索。 –