我有一个像这样的文件(out.txt):
fileOne.txt 100 ascii
fileTwo.txt 200 ascii
test 90 other
我想创建另一个这样的文件:
Filename Size Type
fileOne.txt 100 ascii
fileTwo.txt 200 ascii
test 90 other
因为我使用了gawk命令,我的awk文件是这样的:
BEGIN {
print "-----------------------------------------------------\n"
print " Report files in directory\n\n"
printf "\t%s\t\t%s\t\t%s\n","File Name","Size","Type"
}
{
printf "\t%s\t\t%s\t\t%d\n",$1,$2,$3
}
它对我有用,但我的问题是: 如果有一个长名称的文件,它的名字也会出现在type列中,而size值会在size列下面打印出来,我得到一个东西:
Filename Type Size
fileWithLongName.txt ascii 100
fileTwo.txt ascii 200
test other 90
答案 0 :(得分:2)
如果您可以使用临时文件:
YOUR_AWK_SCRIPT_ABOVE | column -t > temp && mv temp ORIGINAL_FILENAME
默认情况下, column -t
是按空格分隔列。要指定一组字符来分隔列,请-s
选项。
您可以使用:
#name:script.awk
BEGIN{
printf "%s\t%s\t%s\n","File Name","Size","Type"
}
{
printf "%s\t%s\t%d\n",$1,$2,$3
}
然后:
awk -f script.awk INPUT_FILENAME | column -s $'\t' -t > temp && mv temp INPUT_FILENAME
您可以添加:
print "-----------------------------------------------------\n"
print " Report files in directory\n\n"
完成上述命令后行。