输入文件。
1 30.01.2025 30.01.2025 telefontelefon -1.00 87.39 87.39 30.01.2025
2 31.01.2025 31.01.2025 telefontelefon -3.46 32.14 32.14 31.01.2025
3 01.02.2025
4 02.02.2025
5 03.02.2025 03.02.2025 telefontelefon -10.00 71.14 71.14 03.02.2025
6 04.02.2025 04.02.2025 telefontelefon 1609.00 80.14 80.14 04.02.2025
7 05.02.2025 05.02.2025 telefontelefon 11.00 22.14 22.14 05.02.2025
8 06.02.2025
9 07.02.2025 05.02.2025 telefontelefon 14.00 22.14 55.14 05.02.2025
我想要获取一个输出文件。
1 30.01.2025 30.01.2025 telefontelefon -1.00 87.39 87.39 30.01.2025
2 31.01.2025 31.01.2025 telefontelefon -3.46 32.14 32.14 31.01.2025
3 01.02.2025 32.14
4 02.02.2025 32.14
5 03.02.2025 03.02.2025 telefontelefon -10.00 71.14 71.14 03.02.2025
6 04.02.2025 04.02.2025 telefontelefon 1609.00 80.14 80.14 04.02.2025
7 05.02.2025 05.02.2025 telefontelefon 11.00 22.14 22.14 05.02.2025
8 06.02.2025 22.14
9 07.02.2025 05.02.2025 telefontelefon 14.00 22.14 55.14 05.02.2025
对于一列我使用了这个命令。
awk 'NF{last=$0;print;next} {$0=last}1' plik
列与列之间的空间就是这样的。
$ awk '{gsub(" ","-")};1' plik
1--30.01.2025-----30.01.2025-----------telefontelefon--------1.00-----------87.39---87.39---30.01.2025
2--31.01.2025-----31.01.2025-----------telefontelefon--------3.46-----------32.14---32.14---31.01.2025
3--01.02.2025-----
4--02.02.2025-----
5--03.02.2025-----03.02.2025-----------telefontelefon--------10.00----------71.14---71.14---03.02.2025
6--04.02.2025-----04.02.2025-----------telefontelefon-------1609.00---------80.14---80.14---04.02.2025
7--05.02.2025-----05.02.2025-----------telefontelefon-------11.00-----------22.14---22.14---05.02.2025
8--06.02.2025-
9--07.02.2025-----05.02.2025-----------telefontelefon-------14.00-----------22.14---55.14---05.02.2025
pic@pi
查看:
或者
产量:
这不会保留间距,但会使输出呈柱状,而不管存储的原始间距或宽度如何,
$7
因此如果不比您要求的更好,它可能是可以接受的,使用任何awk
和 GNU,column
不管输入中的空白是什么:注意:
prev=$7=$7
不是打字错误,而是将行上所有空格链更改为制表符的简写,$7=$7; prev=$7
因为$7=$7
修改任何字段都会重新构造用 s$0
替换所有FS
sOFS
并保存变量中prev=$7
的当前值,以便可以在下一行需要时使用,这两个都是获得所需输出的必要步骤。$7
prev
如果您没有 GNU,
column
那么实现相同的列格式化功能并不难awk
- 只需在处理输入时记住每个字段的宽度,将处理后的字段保存在数组中,然后在END
部分中使用每列中所有字段的最大宽度打印每个字段。 SO 上有很多这样的例子,或者可以通过谷歌搜索获得。