균일한 형식의 출력

균일한 형식의 출력

Linux에서는 grep 명령을 사용하여 일부 데이터를 추출했습니다. 아래는 내가 얻은 것입니다. 열 1에는 숫자나 문자열이 포함될 수 있고 열 2는 동일합니다.

123 ABC
456 DEF
GHI 789

숫자가 있는 열 1과 문자열이 있는 열 2 또는 그 반대의 경우 아래와 같은 출력이 필요합니다.

123 ABC
456 DEF
789 GHI

답변1

awk '{ print (/^[A-Z]/?$2 FS $1 : $0) }' infile

줄이 대문자 ASCII 문자로 시작하면 열이 바뀌고, 그렇지 않으면 줄이 변경되지 않고 인쇄됩니다.

또는 짧게 말하면:

awk '/^[A-Z]/{ $0=$2 FS $1 }1' infile

답변2

이 답변을 게시하는 것은 열이 2개만 포함된 경우에만 작동합니다.

awk '/^[A-Z]/{m=$1;$1=$2;$2=m}1' filename


output

awk '/^[A-Z]/{m=$1;$1=$2;$2=m}1' filename
123 ABC
456 DEF
789 GHI

관련 정보