【问题标题】:Aligning lines in text file对齐文本文件中的行
【发布时间】:2020-07-12 06:37:01
【问题描述】:
我在文本文件中有如下数据
E993143|65282
C960954567|50222
P1_ABCDEFG_bbb|26153
A960416|25654
D987747|13410
我想在下面使用 linux 进行适当的对齐
E993143 |65282
C960954567 |50222
P1_ABCDEFG_bbb |26153
A960416 |25654
D987747 |13410
有人可以帮我吗?
注意:我不能使用excel格式
【问题讨论】:
标签:
linux
file
text
formatting
alignment
【解决方案1】:
您可以在文本上按以下方式使用 awk:
awk -F"|" '{printf("%-15s \t |%-10i\n", $1, $2)}'
在此,我将第一列的最大长度固定为“15”,第二列固定为“10”。如果您期望更长的长度,您可以更改这些数字。
解释:
- “-F”标志将分隔符定义为“|”
- "%-15s \t |%-10i\n" - 这部分定义了我们希望如何格式化输出字符串。 “-15s”中的“-”用于输出列的左对齐,“15s”用于 15 个字符长度的字符串。同样,'-10i' 用于 10 位整数值。 "\t" 和 "\n" 是在中间添加制表符空间,在末尾添加行空间。
输出:
➜ test cat test.txt | awk -F"|" '{printf("%-15s \t |%-10i\n", $1, $2)}'
E993143 |65282
C960954567 |50222
P1_ABCDEFG_bbb |26153
A960416 |25654
D987747 |13410
➜ test