在每行的末尾添加一个特定的字符串

时间:2020-04-06 15:23:44

标签: bash shell unix sed

我有一个包含4列的主文件,例如:

a b c d
e f g h
i j k l

在另一个文件中,我有一行文本与主文件中的相应行相对应,我想将其作为新列添加到主文件中,例如:

a b c d x
e f g h y
i j k l z

这可能是bash吗?我只能在每行的末尾添加相同的字符串。

4 个答案:

答案 0 :(得分:3)

两种方法

1)paste file1 file2

2)遍历两个文件并逐行合并并写入新文件

答案 1 :(得分:1)

您可以为此使用GNU并行:

fe-laptop-m:test fe$ cat first 
a b c d
e f g h
i j k l
fe-laptop-m:test fe$ cat second 
x
y
z
fe-laptop-m:test fe$ parallel echo  ::::+ first second 
a b c d x
e f g h y
i j k l z

我对您想要实现的目标正确吗?

答案 2 :(得分:1)

这可能对您有用(GNU sed):

sed -E 's#(^.*) .*#/^\1/s/$/ &/#' file2 | sed -f - file1

从file2创建一个sed脚本,该脚本使用正则表达式来匹配file1中的一行,如果确实这样做,则会将file2中该行的内容追加到匹配的行中。

N.B。这与文件1的顺序和长度无关。

答案 3 :(得分:0)

您可以尝试使用pr

pr -mts' ' file1 file2