-1

単語のリストを取得し、各単語に別のリストの単語を追加する bash に関する指示が必要です。

リスト1

1
2
3

リスト 2

!
@
#

新しいリスト (A)

1!
2!
3!

(ロ)

1@
2@
3@

(ハ)

3!
3@
3#

どのように開始したか:(2 つの入力ファイルを持つことをあきらめて、代わりにカウンター関数を使用したことに注意してください。)

#!/bash/bin
CT=1000 
LIMIT=10000 
while [ "$CT" -lt "$LIMIT" ] 
do 
    echo $CT 
    sed -e 's/$/'$CT'/' -i 'INPUTFILE.txt' 
let "CT +=1" 
done
4

1 に答える 1

0

番号付きの出力ファイルが必要だと仮定して、ループ内でカウンターを実行してみてください。

#!/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 の代わりに実行できます。)

于 2014-12-10T05:46:21.250 に答える