の各列の(長さ)(すなわちstores.datファイル)UNIX - 最大このようなデータを含むファイルを指定したファイル
sid|storeNo|latitude|longitude
2tt|1|-28.0372000t0|153.42921670
9|2t|-33tt.85t09t0000|15t1.03274200
所望の出力:
sid : 3
storeNo : 2
latitude : 16
longitude : 13
に構文は何ですか各列の下の値の最大長を返しますか?
私はこれを試してみましたが、それは動作しません:
nawk 'BEGIN { FS = "|" }
{
for(n = 1; n <= NF; n++) {
if (length($n) > max)
max = length($n)
maxlen[$n] = max
}
}
END {
for (i in maxlen) print "col " i ": " maxlen[i]
} ' stores.dat
UPDATE(マットの答えのおかげで - 私はこれに落ち着い):
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 colname) {
print colname[i], ":", maxlen[i]+0;
}
} ' filename
何かがうまくいかないときは、あなたが提供した出力だけでなく、サンプルコードが提供する実際の出力も与えるべきです。 – Gabe