番号付きの出力ファイルが必要だと仮定して、ループ内でカウンターを実行してみてください。
#!/bin/bash
i=0
while read -r suffix; do
let i++
sed "s/$/$suffix/" INPUTFILE.txt >file$i
done <SUFFIXFILE.txt
sed -i
元の入力ファイルをその場で操作することに注意してください。あなたはそれを望んでいません。新しいファイルに出力したい。したがって、オプションを削除し-i
、シェルのリダイレクト機能を使用して、標準出力の送信先を示します。
宛先ファイル名を列挙したい場合は、少しトリッキーです。解決策の 1 つは、サフィックス ファイルに宛先ファイル名を追加することです。
! A
@ B
# C
次に、ループで両方のトークンを読み取ります。
while read -r suffix outputfile; do
sed "s/$/$suffix/" INPUTFILE.txt >"$outputfile"
done <SUFFIXLIST.txt
または、この情報をスクリプトに埋め込みたい場合は、ヒア ドキュメントを使用します。
while read -r suffix outputfile; do
sed "s/$/$suffix/" INPUTFILE.txt >"$outputfile"
done <<____HERE
! A
@ B
# C
____HERE
(唯一の Bash 固有の構造はlet
算術演算用であるため、それを使用しない後者の 2 つのスクリプトは/bin/sh
、Bash の代わりに実行できます。)