私のテキストファイルに特定の形式の文字列があります。文字列の単語部分を置き換えて、数値識別子を保持したいと思います。たとえば、似たような文字列L2_name1
がありますが、L12_name6
同じ識別子を持つ名前がたくさんあります。 name1 = JohnMSmith、name6 = JohnMSmithinson。
似たようなものを使いたいのですが、sed 's/L2_name1/L2_new_name/g' file.csv
正規表現を使うので、次のようになります。
sed -E 's/L[0-9]{1,2}_name1/{same leading monicker found in the matching part}_new_name/g' file.csv
答え1
覚えたい内容をコマンドの一致部分にかっこ内に入れてから、\N
数字 N を使って記憶した内容を記憶し、それを一致部分の N 番目の括弧セットに置き換えればよい。
sed -E 's/(L[0-9]{1,2})_name([0-9]+)/\1_new_name\2/g' file.csv
よりsed マニュアル詳細を確認してください。
編集:拡張正規表現を()[]{}+
指定したので、さまざまな特殊文字を使用できることを指摘する必要があります。-E
マニュアルは再び完全な詳細を提供します。
答え2
\0
一致する文字列を引用するために使用できます。
echo "test string this is a test string" | sed -E 's/test string(.+?)test string/\0 success/'
詳細については、正規表現でトピックキャプチャグループを参照してください。