記号で区切られた任意の長さの2つの文字列を置き換えます。

記号で区切られた任意の長さの2つの文字列を置き換えます。

スペースで区切られた複数の単語で構成されるファイル名を「-」記号の最初の項目を検索し、その文字列の順序を切り替えて2つの別々の文字列に分割しようとしています。たとえば、ファイル名が元

ワード 1 ワード 2... ワード 9 - ワード A ワード B... ワード Z

その後、希望の出力は次のようになります。

ワード A ワード B... ワード Z - ワード 1 ワード 2... ワード 9

「-」は両側に最大1つの単語を含めることができます。私のsedコードは

sed -r 's/([a-zA-Z0-9]+) \- ([a-zA-Z0-9])*/\2 \- \1/'

私の質問は、sedの「-」の前後に単語数を指定する方法です。 sedは最大9つのモードしかサポートしていません。

私は読んだ過去からの質問しかし、問題は既知の固定数の単語を切り替えることです。

ベストアンサー1

この試み:

echo 'word1 word 2 ... word9 - wordA wordB ... wordZ' | sed 's/\(.*\) - \(.*\)/\2 - \1/'

出力:

ワード A ワード B... ワード Z - ワード 1 ワード 2... ワード 9

おすすめ記事