この質問にはすでに回答があります :sed:最初の文字列を除くすべての文字列を削除します
(4つの回答)
2年前に閉じられました。
Linux
(4つの回答)
2年前に閉じられました。
行を含むファイルがあります:
india;austria;japan;chile
china;US;nigeria;mexico;russia
各行のセミコロンの出現箇所をすべて、たとえば次のように置き換えたいと思います。 ;NEW;
、ただし2回目からのみ。結果は次のようになります。
india;austria;NEW;japan;NEW;chile
china;US;NEW;nigeria;NEW;mexico;NEW;russia
これをgsubで試しましたが、すべてのオカレンスが置き換えられます:
awk '/;/{gsub(/;/,";NEW;") }{print}'
承認された回答:
awk
ソリューションははるかに長くなりますが、一般的なものにするのは簡単です:
awk -F; '{for(i=1;i<NF;i++)printf"%s;%s",$i,(i>=2)?"NEW;":"";print$NF}' replacefile
sed
でそれを行うことは可能です また、t
でループを作成します コマンドを実行し、常に2番目(または必要な方)の区切り文字を一時的なマーク(通常はn
)に置き換えます ):
sed ':b;s/;/n/2;tb;s/n/;NEW;/g' replacefile