以下のような文字列が標準入力で渡されます。
文字列がスペースで区切られていて、個数は不明ですが、最低でも6個(str6まで)は必ず存在します。
区切りのスペースは1つとは限らず、2個以上繋がって1つの区切りになっている可能性があります。
text
1str1 str2 str3 str4 str5 str6 str7 str8 str9 ...
この文字列を、str4
からstr6
を逆順にし、str7
以降はそのままにしたいと考えています。
以下のようにするとできましたが、長いので、
zsh
1cat a.txt | perl -p -e 's/^([^ ]+ +)([^ ]+ +)([^ ]+ +)([^ ]+ +)([^ ]+ +)([^ ]+ +)/\1\2\3\6\5\4/g'
このように同じ部分を繰り返しにしてみたところ、\1
がどんどん上書きされるだけで、\2
以降にはマッチした部分が入らなくなってしまいました。
zsh
1cat a.txt | perl -p -e 's/^([^ ]+ +){6}/\1\2\3\6\5\4/g'
これを防ぐ方法はないでしょうか。
回答2件
あなたの回答
tips
プレビュー