在不使用 sed 的情况下交换每行的前两个单词

sha*_*ard 3 text-processing

我想知道是否有一种更简单的方法来交换每行的前两个单词。

假设我的文本文件由以下三行组成:

 Mary Joe
 William Edward
 Shawn Liam
Run Code Online (Sandbox Code Playgroud)

最终我想要这个:

 Joe Mary 
 Edward William
 Liam Shawn
Run Code Online (Sandbox Code Playgroud)

我知道这可以通过 sed 命令来完成:

sed -e "s/\([^ ]*\) *\([^ ]*\)/\2 \1 /g" file
Run Code Online (Sandbox Code Playgroud)

但要记住的太多了。

有没有更简单的方法来做到这一点。

这是 bash 顺便说一句。

iru*_*var 5

使用两条字线,这可能更容易:

awk '{print $2,$1}' file
Run Code Online (Sandbox Code Playgroud)

如果您需要交换文件的前两个单词,每行包含或不包含两个单词:

awk 'NF >= 2{t=$2;$2=$1;$1=t};{print}' file
Run Code Online (Sandbox Code Playgroud)

请注意,这会将多个空格合并为一个。