簡體   English   中英

如何將多行回顯到來自grep結果的文件中

[英]How to echo multiple lines into files coming from a grep result

我想將多行回顯到來自grep結果的文件中。

事實上,我grep從命令某些文件一些文字:

find . -name *.h -o -name *.c -o -name *.cpp | xargs grep -n -l --color Apache

上面命令的輸出如下:

./DIR/A.h
./DIR/B.cpp
./DIR/C.c

借助grep命令的-l選項,我可以從grep結果中獲取文件名。

現在,我想在文件Ah B.cpp Cc插入多行。

我怎樣才能做到這一點 ?

嘗試這個:

find . -name *.h -o -name *.c -o -name *.cpp | \
xargs grep -n -l --color Apache | \
xargs sed -i '1s/^/text to prepend\n/'

這將在每個文件上添加文本“ text to prepend ”。

這取決於您要在其中插入行的文件位置。 在最簡單的情況下,您可以將它們附加到末尾:

find . -name '*.h' -o -name '*.c' -o -name '*.cpp' |
xargs grep -n -l |
while read FILE; do echo -e "line1\nline2" >>"$FILE"; done

在這里,我們使用while循環,將每個文件名讀取到FILE變量,並將echo輸出附加到每個文件的末尾。

更新:用於插入文件的開頭:

find . -name '*.h' -o -name '*.c' -o -name '*.cpp' |
xargs grep -n -l |
while read FILE; do (echo -e "line1\nline2"; cat "$FILE") >>"$FILE.new" && mv "$FILE.new" "$FILE"; done

對於更高級的情況,您可以使用sed ,該sed具有特殊的命令( ai )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM