均一な形式の出力

均一な形式の出力

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

関連情報