sedの交換

sedの交換

次の文字列があります。

/test/test/ 12 /test/test

私の目標は、これを次のように変更することです。

/test/est/ 12 /test/test

これはコマンドです:

echo "$x" | sed 's@\(/*/\).@\1@g'"

私は今使用していますが、「/」の2番目のインスタンスの代わりにどこにでも適用されます。

答え1

Steeldriverが述べたように、GNU sedを使用すると、どのアイテムを交換する必要があるのか​​がわかります。たとえば、次のようになります。

echo "/test/test/ 12 /test/test" | sed -n -e  's_/._/_2 p' 

この機能が利用できない場合は、次のように書くこともできます。

echo "/test/test/ 12 /test/test" | sed -n -r -e  's_(/[a-z]([a-z]+))\1_\1/\2_ p'

サージ:http://www.grymoire.com/Unix/Sed.html[パターンの一部を保存するには\ 1を使用してください。]

答え2

echo "/test/test/ 12 /test/test" | sed 's/\/test\/t/\/test\//'

答え3

良くて楽です...

sed -n "s/test/est/2p"
  • -n 何も印刷しない
  • s/代替
  • 「テスト」と「est」
  • /2 ただし、2番目のインスタンスのみ
  • p印刷結果

関連情報