【发布时间】:2016-05-10 10:32:05
【问题描述】:
所以我遇到的问题是格式化列以提供更多空间,所以我不确定如何为列模式提供更多空间,以便所有内容都对齐。现在我的 awk 语句只是格式化它,以便每个字段都是分开的,这样没有中间名的人就不会搞砸了哈哈。
$ cat file
1 Jackson, Bob D. C0001 book pizza apple 4.00 123as
2 Filer, Jack C0002 happy apple hat 4.00 124ab
3 Metro, Jim K. C0003 kindle pizza grape 4.00 125ac
那是原始文件,所以我使用下面的 awk 语句来分隔每一列,这样中间名就不会尝试将另一列分组到其中
$ echo "# ""Name ""LS ""mode ""food ""item ""num ""list "
$ echo "- ""--------------- ""----- ""--------- ""-------""----- ""---- ""----- "
$ awk -v OFS='~' '{$2=$2" "$3;$3=""}
NF==10{$2=$2" "$4;$4=""}
NF==9{$3=$3 OFS ""}1' file | column -ts~
# Name LS mode food item num list
- --------------- ----- --------- ----- ----- ---- -----
1 Jackson, Bob D. C0001 book pizza apple 4.00 123as
2 Filer, Jack C0002 happy apple hat 4.00 124ab
3 Metro, Jim K. C0003 kindle pizza grape 4.00 125ac
所以我希望它按原样出现。如果您有更好的方法,那么只需在随意编辑时回显这些项目,但如果它很好,为什么它并不重要,我只需要最终输出看起来像这样谢谢!
# Name LS mode food item num list
- --------------- ----- --------- ----- ----- ---- -----
1 Jackson, Bob D. C0001 book pizza apple 4.00 123as
2 Filer, Jack C0002 happy apple hat 4.00 124ab
3 Metro, Jim K. C0003 kindle pizza grape 4.00 125ac
【问题讨论】:
-
您应该发布您的输入文件数据,而不是
awk语句的结果。 -
OK 添加了原文件 抱歉我发的时候没想到
-
现在,问题已经很清楚了,并显示了足够的研究。至于解决方案,您可以使用我的answer中提到的
printf -
现在我不必像在之前的代码中那样使用字段分隔符了吗?因为就像我一直对 Filer 的问题一样,Jack C0002 会尝试成为它的中间名?
标签: unix awk formatting