在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