我有一个 C 程序,它输出两列,完全不对齐。未对齐的原因是第一列中单词的长度差异很大。
我有一个在 vi 中打开的输出文件。如何快速对齐这两列?我可以使用 awk、perl、sed,而不仅仅是 vi (7.2) 工具集。另外,我们是否可以为具有两列以上的文件提供通用的解决方案?
这是示例文件
column1 column2
------- -------
sdfsdfsddfsdfsdfsdfsd 343r5
dfgdfgdf 234
gdfgdfgdfgdfgf 645
想必您正在使用printf
首先输出列。您可以在格式字符串中使用额外的修饰符来确保内容对齐。
- 要打印特定宽度的列(右对齐),请在格式标志前添加宽度,例如,“%10s”将打印宽度为 10 的列。如果字符串长度超过 10 个字符,则该列会更长比你想要的要大,所以选择一个最大值。如果字符串较短,则会用空格填充。
- 要左对齐列,请在前面放置一个 - 号,例如“%-10s”。就个人而言,我喜欢左对齐字符串和右对齐数字。
- 如果要打印地址,可以将填充字符从空格更改为带有前导零的零:“%010x”。
举一个更深入的例子:
printf("%-30s %8s %8s\n", "Name", "Address", "Size");
for (i = 0; i < length; ++i) {
printf("%-30s %08x %8d\n", names[i], addresses[i], sizes[i]);
这将打印三列,如下所示:
Name Address Size
foo 01234567 346
bar 9abcdef0 1024
something-with-a-longer-name 0000abcd 2048
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)