如何使用 sed 搜尋“/>”

如何使用 sed 搜尋“/>”

/>我的需要是在目錄中的所有文件的第一個字串之後附加一個新字串。

這是我的腳本:

#!/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"

這將選擇正規表示式的第一個符合項目之前的所有行,然後僅將命令應用於與表達式相符的該範圍內的行,同時將所有其他行傳遞不變。

需要文字換行符來表示您新增的文字的結尾。

相關內容