【发布时间】:2015-09-02 23:00:14
【问题描述】:
我有一个包含大量信息的文件,我想以特定格式获取这些信息,即在不同列之间添加特定数量的空格。我可以为每一行添加相同数量的空格,但某些列需要右对齐,这意味着我可能需要在某些行中添加更多空格。我不知道该怎么做,而且 awk 似乎不起作用,因为我修改了两行以上。
这是一个例子:
我设法得到一个看起来像这样的文件
apple 1 33.413 C cat 10
banana 2 21.564 B horse 356
cherry 3 43.223 D cow 32
pear 4 26.432 A goat 22
raspberry 5 72.639 C eagle 4
watermelon 6 54.436 A fox 976
pumpkin 7 42.654 B mouse 1
peanut 8 36.451 B dog 56
orange 9 57.333 C elephant 32
coconut 10 10.445 A frog 3
blueberry 11 46.435 B camel 446
但我想获取这种格式的文件
apple 1 33.413 C cat 10
banana 2 21.564 B horse 356
cherry 3 43.223 D cow 32
pear 4 26.432 A goat 22
raspberry 5 72.639 C eagle 4
watermelon 6 54.436 A fox 976
pumpkin 7 42.654 B mouse 1
peanut 8 36.451 B dog 56
orange 9 57.333 C elephant 32
coconut 10 10.445 A frog 3
blueberry 11 46.435 B camel 446
我可以使用什么 bash 命令来右对齐第二列和第五列?
【问题讨论】:
-
column -t file是一个好的开始,只是它将单词向左对齐 -
写
awk doesn't seem to work since I have more than two lines modify- 嗯? awk 在数百万行的文件上工作得很好。不知道你在想什么。顺便说一句,该术语是“对齐”,而不是“中心”。文本可以左对齐 (foo____)、右对齐 (____foo) 或居中 (__foo__),但您问题中的短语right centeredas 没有意义。 -
@ed-morton 这个问题是我将退出 sed - 程序集并让 awk 为所创建的内容做的情况。还是继续浪费时间并尝试寻找 sed 解决方案?时间就是金钱……