均匀格式化输出

均匀格式化输出

在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

相关内容