如何将输出附加到现有行?

如何将输出附加到现有行?

我正在运行一个输出数字列表的命令。我正在使用 for 循环运行该命令 5 次。对于每个输出,我想将这些数字附加到现有文本文件中的相应行。

命令输出:

# execute_command
20
30
480
50

带循环的命令

for i in {1..5};
    # execute_command

带循环的命令输出

20
30
480
50
30
50
60
70
90
20
20
40
40
35
60
70
90
50
40
10

这只是我创建的一个文本文件。

cat:
rabbit:
car: 
can:

我想将命令输出附加到现有的文本文件中。

第一次迭代

cat: 20
rabbit: 30
car: 480
can: 50

第二次迭代

cat: 20, 30
rabbit: 30, 50
car: 480, 60
can: 50, 70

第三次迭代

cat: 20, 30, 90
rabbit: 30, 50, 20
car: 480, 60, 20
can: 50, 70, 40

第四次迭代

cat: 20, 30, 90, 40, 
rabbit: 30, 50, 20, 35
car: 480, 60, 20, 60
can: 50, 70, 40, 70

第五次迭代

cat: 20, 30, 90, 40, 90 
rabbit: 30, 50, 20, 35, 50
car: 480, 60, 20, 60, 40
can: 50, 70, 40, 70, 10

请帮我。非常感谢!

答案1

这是指针的使用sedpaste命令。

您的(包含带有等的base_file列)有四行。您需要系统地“移动”并粘贴前四行(即命令的输出),直到列表用完。cat:rabbit:numbers_list

考虑以下命令:

sed -n '1,4p' numbers_list | paste base_file -

这使:

cat:    20
rabbit: 30
car:    480
can:    50

此输出是您的下一个base_file.您可以将其放入一个名为的临时文件中nbase_file

sed -n '1,4p' numbers_list | paste base_file - >nbase_file

然后

mv nbase_file base_file

现在删除其中的前四行numbers_list

sed -i '1,4d' numbers_list

并使用循环重复该过程。

请注意,新项目是按制表符分隔粘贴的。因此,如果您想要逗号作为分隔符,您可能需要使用-d ","with命令。paste

相关内容