我想知道是否有一种更简单的方法来交换每行的前两个单词。
假设我的文本文件由以下三行组成:
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 顺便说一句。
使用两条字线,这可能更容易:
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)
请注意,这会将多个空格合并为一个。