Shell-Script
使用 ansible 或 unix 命令在文件中特定模式的每次匹配後插入行
我試圖在文本文件中每次出現特定字元串後插入一行。我嘗試使用
lineinfile
ansible 模組,但它只能在文件中匹配字元串的最後一個或第一個實例之後插入一行。有誰知道我如何使用 shell 腳本或 ansible playbook 來實現這一點。我正在使用 linux 作業系統,因此任何解決此問題的 unix 命令都會有所幫助。如下所示,我試圖在以
mba
開頭的每一行之後插入foo
:原始txt文件內容:
foo ab zz foo='dummy' cd zz foo='dats' lm xx
所需輸出:
foo mba ab zz foo='dummy' mba cd zz foo='dats' mba lm xx
基於
awk
- 的解決方案可能如下所示:awk '{print} /^foo/{print "mba"}' input.txt
這將預設列印目前行,但如果它恰好以 開頭
foo
,它還將mba
在處理繼續到下一行之前列印在附加行上。
幾個選擇:
perl
$ perl -pe 's/^foo.*/$&\nmg/' file foo mg ab zz foo='dummy' mg cd zz foo='dats' mg lm xx
awk
$ awk '1;/^foo/{print "mg" }' file foo mg ab zz foo='dummy' mg cd zz foo='dats' mg lm xx