一致する文字列のn番目の位置(この場合は2番目)に文字を追加する必要があります。たとえば、ファイル内の文字列の前と埋め込み文字列の後にtext.txt
Nを追加したいとします。"
blah
テキスト.txt:
"1blah8","na","8blah4"
"2blah5","na","10blah4"
"5blah5","na","1blah234"
text2.txtを取得したいです。
"Ν1blah8","na","Ν8blah4"
"Ν2blah5","na","Ν10blah4"
"Ν5blah5","na","Ν1blah234"
私はこれを試しましたが、sed 's/.*blah.*/N&/' text.txt > text2.txt
各行の最初の発見文字列からのみN
古い内容を取得します。"
ベストアンサー1
別の方法:
$ sed 's/"\([^"]*blah[^"]*"\)/"N\1/g' test.txt
"N1blah8","na","N8blah4"
"N2blah5","na","N10blah4"
"N5blah5","na","1blah234
"
正規表現は、a、0個以上の非"
文字、次にa blah
、"
0個以上の非文字を検索します。かっこのためこうなります。キャプチャされます後で呼び出すことができます\1
。したがって、コマンドは一致するパターンをそれ自体()に置き換えますが、1つを追加し\1
ます"N
。これが最初のものが"
括弧の外にある理由です。/g
最後の修飾子は、各行で一致するすべての文字列を置き換えます。
あなたのsed
バージョンがそれをサポートしている場合は、次のように単純化できます。
sed -E 's/"([^"]*blah[^"]*")/"N\1/g'