sedを使用して、一致する文字列のn番目の位置に文字を追加します。

sedを使用して、一致する文字列のn番目の位置に文字を追加します。

一致する文字列のn番目の位置(この場合は2番目)に文字を追加する必要があります。たとえば、ファイル内の文字列の前と埋め込み文字列の後にtext.txtNを追加したいとします。"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'

おすすめ記事