awk
将“输入”转换为“所需输出”会有用吗?
输入
testing speed of encryption
test 0 (64 bit key, 16 byte blocks): 2250265 operations in 1 seconds (36004240 bytes)
test 1 (128 bit key, 64 byte blocks): 879149 operations in 1 seconds (56265536 bytes)
test 2 (128 bit key, 256 byte blocks): 258978 operations in 1 seconds (66298368 bytes)
test 3 (128 bit key, 1024 byte blocks): 68218 operations in 1 seconds (69855232 bytes)
test 4 (128 bit key, 8192 byte blocks): 8614 operations in 1 seconds (70565888 bytes)
test 10 (256 bit key, 16 byte blocks): 1790881 operations in 1 seconds (3654096 bytes)
所需的输出
testing speed of encryption
test 0 (64 bit key, 16 byte blocks): 2250265 operations in 1 seconds (36004240 bytes)
test 1 (128 bit key, 64 byte blocks): 879149 operations in 1 seconds (56265536 bytes)
test 2 (128 bit key, 256 byte blocks): 258978 operations in 1 seconds (66298368 bytes)
test 3 (128 bit key, 1024 byte blocks): 68218 operations in 1 seconds (69855232 bytes)
test 4 (128 bit key, 8192 byte blocks): 8614 operations in 1 seconds (70565888 bytes)
test 10 (256 bit key, 16 byte blocks): 1790881 operations in 1 seconds (3654096 bytes)
答案 0 :(得分:41)
使用column
正确对齐的技巧是使用rev
:
$ head -1 file; tail -n+2 file | rev | column -t | rev
testing speed of encryption
test 0 (64 bit key, 16 byte blocks): 2250265 operations in 1 seconds (36004240 bytes)
test 1 (128 bit key, 64 byte blocks): 879149 operations in 1 seconds (56265536 bytes)
test 2 (128 bit key, 256 byte blocks): 258978 operations in 1 seconds (66298368 bytes)
test 3 (128 bit key, 1024 byte blocks): 68218 operations in 1 seconds (69855232 bytes)
test 4 (128 bit key, 8192 byte blocks): 8614 operations in 1 seconds (70565888 bytes)
test 10 (256 bit key, 16 byte blocks): 1790881 operations in 1 seconds (3654096 bytes)
答案 1 :(得分:21)
是。查看awk的printf()函数的语法。缩写示例代码。 。
{
printf("%s %2s ", $1, $2);
printf("%4s %s %s ", $3, $4, $5);
printf("%4s %s %s ", $6, $7, $8);
printf("%7s\n", $9);
}
输出
test 0 (64 bit key, 16 byte blocks): 2250265
test 1 (128 bit key, 64 byte blocks): 879149
test 2 (128 bit key, 256 byte blocks): 258978
test 3 (128 bit key, 1024 byte blocks): 68218
test 4 (128 bit key, 8192 byte blocks): 8614
test 10 (256 bit key, 16 byte blocks): 1790881
有几种方法可以通过未经修改的方式传递“标题”。这种方式假设它始终位于文件的第一行。
NR==1 { print $0}
NR>1 {
printf("%s %2s ", $1, $2);
printf("%4s %s %s ", $3, $4, $5);
printf("%4s %s %s ", $6, $7, $8);
printf("%7s\n", $9);
}
答案 2 :(得分:5)
awk '
FNR==1 { if (NR==FNR) print; next }
NR==FNR {
for(i=1;i<=NF;i++)
w[i] = (w[i] <= length($i) ? length($i) : w[i])
next
}
{
for(i=1;i<=NF;i++)
printf "%*s",w[i]+(i>1?1:0),$i
print ""
}
' file file