
/>
ディレクトリ内のすべてのファイルの最初の文字列の後に新しい文字列を追加する必要があります。
これが私のスクリプトです:
#!/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"
これにより、正規表現の最初の一致までのすべての行が選択され、その範囲内で正規表現に一致する行にのみコマンドが適用され、他のすべての行は変更されずに通過します。
追加するテキストの終わりを示すには、リテラルの改行が必要です。