如何在cide中对齐列?

如何在cide中对齐列?
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

希望有帮助。

相关内容