sed를 사용하지 않고 각 줄의 처음 두 단어 바꾸기

sed를 사용하지 않고 각 줄의 처음 두 단어 바꾸기

각 줄의 처음 두 단어를 바꾸는 더 쉬운 방법이 있는지 궁금합니다.

내 텍스트 파일이 다음 세 줄로 구성되어 있다고 가정해 보겠습니다.

 Mary Joe
 William Edward
 Shawn Liam

궁극적으로 나는 이것을 원한다:

 Joe Mary 
 Edward William
 Liam Shawn

sed 명령으로 이 작업을 수행할 수 있다는 것을 알고 있습니다.

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

하지만 기억할 것이 너무 많습니다.

이 작업을 수행하는 더 쉬운 방법이 있습니까?

그건 그렇고, 이것은 bash입니다.

답변1

두 개의 단어 줄을 사용하면 더 쉬울 수 있습니다.

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

한 줄에 두 단어가 있든 없든 파일의 처음 두 단어를 바꿔야 하는 경우:

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

이렇게 하면 여러 공백이 하나로 축소됩니다.

답변2

단어를 공백으로 구분하면 awk더 쉽습니다 .

awk 'NF > 1 {a = $1; $1 = $2; $2 = a};1' <file

관련 정보