0

ファイル「text.txt」から削除して「111111111」に置き換える必要がある100,000項目のリストを含むファイル「items.txt」があります。

意図したとおりに機能するこのスクリプトを作成しました。

#!/bin/bash
a=0
b=`wc -l < ./items.txt`
while read -r line
do
    a=`expr $a + 1`
    sed -i "s/$line/111111111/g" text.txt
    echo "Removed ("$a"/"$b")."
done < ./items.txt

このスクリプトは、「items.txt」の行を調べ、sed「text.txt」から各行を削除するために使用します。

ただし、このスクリプトは非常に遅いです。私の見積もりでは、コンピューター上のファイルからすべてのアイテムを削除するには 1 週間以上かかります。すべてのアイテムをすばやく交換するより効率的な方法はありますか?

バッシュ 4.1.5

4

3 に答える 3

1

出力によってスクリプトが遅くなります。それを削除すると、大幅な高速化に気付くでしょう。削除する行:

 echo "Removed ("$a"/"$b")."
于 2013-04-19T23:28:23.923 に答える