sedを使用せずに各行の最初の2つの単語を置き換える

sedを使用せずに各行の最初の2つの単語を置き換える

各行の最初の2つの単語を置き換えるより簡単な方法があるかどうか疑問に思います。

私のテキストファイルが次の3行で構成されているとしましょう。

 Mary Joe
 William Edward
 Shawn Liam

最終的に私はこれが欲しい:

 Joe Mary 
 Edward William
 Liam Shawn

sedコマンドでこれを行うことができることを知っています。

sed -e "s/\([^ ]*\) *\([^ ]*\)/\2 \1 /g" file

しかし、覚えていることが多すぎます。

これを行うより簡単な方法はありますか?

ところで、これはbashです。

ベストアンサー1

2つの単語行を使用すると、簡単になります。

awk '{print $2,$1}' file

1行に2つの単語があるかどうかにかかわらず、ファイルの最初の2つの単語を置き換える必要がある場合:

awk 'NF >= 2{t=$2;$2=$1;$1=t};{print}' file

これにより、複数のスペースが1つに縮小されます。

おすすめ記事