0

ファイルから行を読み取り、各行の最初の列を取得し、その行という名前のファイルに追加するスクリプトがあります ($id.txt という名前のさまざまなファイルを書き込もうとしています)。

(単一ノードのマシンで) これよりも高速なスクリプトを作成することは可能ですか? タブ区切りのフィールドがあり、保持したいフィールドにバックスラッシュなどの特定の文字があるためread -r、 andを使用していることに注意してください。id="$(echo $line | awk '{print $1}')"

    while read -r line
    do
        id="$(echo $line | awk '{print $1}')"
        echo "$line" >> $id.txt
    done < $1

私の入力のいくつかの特徴:

  • 出力$id.txtファイルはそれほど大きくなく、通常は平均で数百行、最大で数千行です
  • IDは実際にはすでにソートされており、行は連続したブロックになっています。つまり:
abc ...
abc ...
def ...
def ...
def ...
def ...
ghi ...
ghi ...
4

2 に答える 2

6

働き過ぎ。

awk '{ print >> $1".txt" }' "$1"
于 2013-07-15T21:00:28.757 に答える