[英]Bash - Comment out a specific line that partly matches a string in a file
我有一個帶有參數的文件
testArgument=
它可能等於或不等於它,但我想對其進行評論並添加帶有提供的信息的新行
之前:
testArgument=Something
結果:
#testVariable=Something
#Comments to let the user know of why the change
testVariable=NewSomething
我應該循環播放還是使用sed
東西? 我需要它與Ubuntu,Debian和bash兼容。
您可以像這樣使用sed:
sed 's/^\(testArgument\)=.*/#&\n\n#Comment here\n\1=NewSomething/' file
&
打印替換中的完整匹配, \\1
表示第一個捕獲組“ testArgument”。
要就地替換文件(即替換原始文件的內容),請添加-i
開關。 否則,如果要將命令輸出到新文件,請執行sed '...' file > newfile
。
如果您使用的替代版本的sed不支持\\n
換行符,請參見此答案以獲取一些解決方法。
或者,使用GNU awk:
gawk '/^testArgument/ {$0 = gensub(/^(testArgument)=.*/, "#\\0\n\n#Comment here\n\\1=NewSomething", 1)}1' file
你可以使用awk
awk '/^testArugment/ {$0="#"$0"\n\n#Comments to let the user know of why the change\ntestVariable=NewSomething"}1' file
cat file
some data
testArugment=Something
more data
awk '/^testArugment/ {$0="#"$0"\n\n#Comments to let the user know of why the change\ntestVariable=NewSomething"}1' file
some data
#testArugment=Something
#Comments to let the user know of why the change
testVariable=NewSomething
more data
更改原始文件
awk 'code....' file > tmp && mv tmp file
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.