
sedコマンドを含むファイルが必要です。このようなファイルがあります。
amb/eng/hello.amb
次の出力が必要です
amx/eng/hello.amx
amx-grk/eng/hello.amx
誰でも私を助けることができますか?
答え1
あなたが使用できるsed -e 's/amb/amx/gp' -e 's/amx/&-grk/' yourfile
。
前任者。
$ echo 'amb/eng/hello.amb' | sed -e 's/amb/amx/gp' -e 's/amx/&-grk/'
amx/eng/hello.amx
amx-grk/eng/hello.amx
答え2
これは次のようになります。スチールドライバーの回答しかし、一致は少し厳しいです。
$ sed '\,^amb/\(.*\)\.amb$, { s,,amx/\1.amx,p; s/amx/&-grk/; }' file
amx/eng/hello.amx
amx-grk/eng/hello.amx
amb/
上記のコマンドは、で始まり終わる行を探していると仮定します.amb
。これらの行が見つかると、実行された初期置換コマンドは、2つの部分文字列をそれぞれにamx/
変更し、次に変更さ.amx
れた行を出力します。 2番目の置換は、amx
最初の文字列(行の先頭に現れることがわかっている)をに変更しますamx-grk
。第2の修正結果は、ループ端の基本出力に出力される。
スクリプトの先頭にregexを実行する区切り文字としてコンマを使用しsed
、s
コマンドにスラッシュを含めたいので、中かっこ内の式グループ内のコマンドを使用しています。
この正確なコマンドを書くもう一つの方法は、b
次のように("branch")を使用することです。いいえ初期正規表現と一致しない行を修正します。これにより、コマンドを3つの別々の式に書き込むことができます。
$ sed -e '\,^amb/\(.*\)\.amb$, !b' -e 's,,amx/\1.amx,p' -e 's/amx/&-grk/' file
amx/eng/hello.amx
amx-grk/eng/hello.amx
答え3
次のことを試すことができます。
sed 's/amb/amx/g' | awk -F'/' '{print $1"/"$2"/"$3 " " $1"-grk/"$2"/"$3}'
例えば
$ echo 'amb/eng/hello.amb' | sed 's/amb/amx/g' | awk -F'/' '{print $1"/"$2"/"$3 " " $1"-grk/"$2"/"$3}'
amx/eng/hello.amx amx-grk/eng/hello.amx