既存の行に出力を追加するには?

既存の行に出力を追加するには?

数値リストを出力するコマンドを実行しています。 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

2回目の繰り返し

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

3回目の繰り返し

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

4回目の繰り返し

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

5回目の繰り返し

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

sedこれはポインタとコマンドを使用することですpaste

あなたのもの(などを含む列を含むbase_file)には4つの行があります。リストがすべて使い果たされるまで、最初の4行(つまり、コマンドの出力)を体系的に「移動」して貼り付ける必要があります。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

今最初の4行を削除してくださいnumbers_list

sed -i '1,4d' numbers_list

そしてループを使ってプロセスを繰り返します。

新しい項目はタブで区切られて貼り付けられます。したがって、カンマを区切り文字として使用するには、-d ","withコマンドを使用する必要があります。paste

関連情報