Bash:将列追加到表中

Bash:将列追加到表中

如果你想在表中追加一列(而不是一行),并且该列肯定具有相同数量的元素,你该怎么做呢?

给定一组每天不断变化的文件,您希望对其进行跟踪。

一个例子是:

file1 3443 words 11-20-13 44 4788 words 11-23-13 
file2 4457 words ...

答案1

您想要paste实用程序:

paste history today > new_history

默认情况下,paste用 分隔行tab。您可以使用该选项更改它-d

paste仅当要合并的文件具有相同的行数、相同的顺序并且没有可能需要从其中一个文件中删除的键时,才按预期工作。对于稍微复杂的实用程序,请参阅join

答案2

我认为执行此操作的最简单方法是循环遍历前几天的输出并打印该行以及您想要在每行末尾的新内容。

$ while read i; do printf "%s %s\n" "$i" "..new stuff.."; done < prior.txt

例子

假设我将您的行放入一个文件中并调用它prior.txt

file1 3443 words 11-20-13 44 4788 words 11-23-13
file2 4457 words ...

如果我运行上面的命令,我会得到以下输出:

$ while read i; do printf "%s %s\n" "$i" "..new stuff.."; done < prior.txt
file1 3443 words 11-20-13 44 4788 words 11-23-13 ..new stuff..
file2 4457 words ... ..new stuff..

细节

上面使用while循环来遍历 的每一行prior.txt。然后,我使用printf打印该行,该行包含在变量中$i,后跟字符串..new stuff..

..new stuff..您可以根据需要将自己的内容替换为上述内容或对其进行扩充,以满足您的需求。

相关内容