簡體   English   中英

重擊-注釋掉與文件中的字符串部分匹配的特定行

[英]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.

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