【发布时间】:2015-08-20 11:26:22
【问题描述】:
我有一个 shell 脚本,它可以找到每列(不包括标题)的最大字符长度,然后将其打印出来 - 当我使用这个命令传入单个时,所有这些都可以正常工作:
awk -F',' -f /cygdrive/c/temp/test2.awk /cygdrive/c/temp/files/testFile1.csv
但是,files 目录包含更多的文件,例如 testFile2.csv 等。我为每个文件运行了上面的命令,发现第一列不超过 7 个字符的长度(不包括标题),但下面的命令返回值 9(这意味着它在计算中包含了标题 - 为什么会这样做那个?):
awk -F',' -f /cygdrive/c/temp/test2.awk /cygdrive/c/temp/files/testFile*.csv
这是脚本:
#!/bin/awk -f
NR==1{
for(n = 1; n <= NF; n++) {
colname[n]=$n
}
}
NR>1{
for(n = 1; n <= NF; n++) {
if (length($n)>maxlen[n])
maxlen[n]=length($n)
}
}
END {
for (i in maxlen) {
print colname[i], ":",maxlen[i];
}
print "----- Total columns: " i " -----";
}
【问题讨论】: