sedスクリプトの各行で最初の5つの空白文字を変更したいと思います。これが私が今まで持っているものです
sed -e "s/ /;/" -e "s/ /;/" -e "s/ /;/" -e "s/ /;/" -e "s/ /;/" myfile
もっと良い方法がありますか?
ところで、私はSolaris sedを使用しています。それが違いをもたらすかどうかはわかりません。
ベストアンサー1
あなたの質問を読んで、少なくともGNU Sed(おそらくSolarisのものではないかもしれません)希望の逆機能:
g:最初の項目だけでなく、正規表現に一致するすべての項目に置換を適用します。
number: 正規表現の番号の一致のみを置き換えます。
Note: the posix standard does not specify what should happen when
現在、sed実装間で広く合意された意味のないgと数値修飾子を混在しています。 GNU sed の場合、相互作用は次のように定義されます。 3 番目の一致の前の一致を無視し、3 番目の一致以降のすべての一致を一致させ、置き換えます。
だから代わりに:
hmontoliu@ulises:/tmp/wb$ echo one two three four five six seven | sed 's/ /;/g5'
one two three four five;six;seven
以下を実行して、必要なものを達成するためのより簡潔なコマンドを取得できます。
hmontoliu@ulises:/tmp/wb$ echo one two three four five six seven | sed -e 's/ /;/g' -e 's/;/ /6g'
one;two;three;four;five;six seven
Solarisの実装にこの機能があるかどうかを教えてください。
ファタイ