各行の最初の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つに縮小されます。
答え2
単語をスペースで区切るとawk
簡単です。
awk 'NF > 1 {a = $1; $1 = $2; $2 = a};1' <file