我發現這個命令來工作的偉大:awk中沒有采取bash的變量
awk -v "/mallory:/,/end-config/ {next} 1" /filename.txt
它需要一切都在像這樣的文件:
alice:
config option 1
config option 2
end-config
mallory: <--- Line gets deleted
config option 1 <--- Line gets deleted
config option 2 <--- Line gets deleted
end-config <--- Line gets deleted
bob:
config option 1
config option 2
end-config
,只刪除了馬洛裏配置塊。
所以現在我想在bash腳本中定義它,所以用戶名可以是bash變量。我這樣做:
#!/bin/bash
username="mallory"
awk -v username="$username" "/username:/,/end-config/ {next} 1" /file.txt
猜猜看是什麼。它不會刪除任何東西。輸出與我開始的文件相匹配。是什麼賦予了?我正確導入了我的變量,對吧?
我們可以使用{print}來減少混亂,而不是使用{print $ 0}。它比隱含的印刷更孤立的真實模式(1)更明確 –