
/>
我的需要是在目錄中的所有文件的第一個字串之後附加一個新字串。
這是我的腳本:
#!/bin/bash
find ./ -type f -print0 | while IFS= read -r -d '' myfile; do
sed -i '0,/\/>/asome text here' $myfile
done
然而,似乎所有的\n
也都匹配。例如,如果一個檔案是這樣的:
abc
def
<abc/>
<abc/>
執行我的腳本後,我將得到以下結果:
abc
some text here
def
some text here
<abc/>
some text here
<abc/>
它確實為第一次出現的 附加新字串/>
,但它也在第一行之前為每一行附加新字串/>
。
答案1
是的。該表達式0,/regex/
將導致其後面的命令 ( a
) 被應用到所有線路直到(並包含)正規表示式的第一個符合項。
我的猜測是你會想做
sed -i '0,/regex/{//a text
}' "$myfile"
這將選擇正規表示式的第一個符合項目之前的所有行,然後僅將命令應用於與表達式相符的該範圍內的行,同時將所有其他行傳遞不變。
需要文字換行符來表示您新增的文字的結尾。