awk '{ print $1 ," ", $2 ," ", $3," " }' irsc_stn_namesort >lististgah.txt
ABH1 30.6000 50.2532
AFJ 35.8553 51.7124
AFRZ 33.4252 59.0150
AKL 36.5945 58.7540
ALA 36.0829 52.8099
AMD1 35.7488 50.9608
AMIS 31.6653 49.2866
ANAR 33.1897 53.7288
ANJ 35.4679 53.9147
AZR 37.6775 45.9836
BAF 31.5902 55.5673
答案1
您可以在 AWK scriptlet 中使用printf
而不是:print
awk '{ printf "%-5s%s%8s\" $1, $2, $3 }' ...
基于以下输入:
ABH1 30.6000 50.2532
AFJ 35.8553 51.7124
AFRZ 33.4252 59.0150
AKL 36.5945 58.7540
ALA 36.0829 52.8099
AMD1 35.7488 50.9608
AMIS 31.6653 49.2866
ANAR 33.1897 53.7288
ANJ 35.4679 53.9147
AZR 37.6775 45.9836
BAF 31.5902 55.5673
...它产生:
ABH1 30.6000 50.2532
AFJ 35.8553 51.7124
AFRZ 33.4252 59.0150
AKL 36.5945 58.7540
ALA 36.0829 52.8099
AMD1 35.7488 50.9608
AMIS 31.6653 49.2866
ANAR 33.1897 53.7288
ANJ 35.4679 53.9147
AZR 37.6775 45.9836
BAF 31.5902 55.5673
我假设输入数据的第一列不超过 4 个字符,并且列 #2 和 #3 是总是7 个字符长。
如果不是这样,可以将命令修改printf "%-As%-Bs%-Cs", $1, $2, $3
为:
- A 是#1 + 1 列的最大长度
- B 是#2 + 1 列的最大长度
- C 是第 3 列的最大长度
更新:
或者不使用 AWK,您可以简单地使用column
命令
echo 'AFJ 35.8553 51.7124
AFRZ 33.4252 59.0150
AKL 36.5945 58.7540
ALA 36.0829 52.8099
AMD1 35.7488 50.9608
AMIS 31.6653 49.2866' | column -t
... 产生
AFJ 35.8553 51.7124
AFRZ 33.4252 59.0150
AKL 36.5945 58.7540
ALA 36.0829 52.8099
AMD1 35.7488 50.9608
AMIS 31.6653 49.2866
希望有帮助。