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