19

区切りテキスト ファイルに基づくインポート システムを使用しています。使用されるファイルのサイズは 2 GB 近くになる場合があり、そのファイルのいくつかの行をチェックする必要があります。それで、特定の値の行を(別のファイルに、または単に画面に)出力する方法を知りたいですか?たとえば、行番号 1010123、1002451、994123 などは、ソース ファイルとまったく同じですか?

4

3 に答える 3

38

行を印刷するNには、次を使用します。

sed 'Nq;d' file

複数の行を印刷するには (昇順であると仮定します) 例: 994123、1002451、1010123:

sed '994123p;1002451p;1010123q;d' file

q最後の行番号の後sedに、1010123 行目に達したときに終了するように指示します。これは、関心のない残りの行をループして時間を浪費するのではなく、大きなファイルで効率的である理由です。

于 2013-02-05T14:11:17.707 に答える
5

多くの Unix ツールでこれを行うことができます。たとえば、次のようにしawkます。

# print first 5 lines with awk
awk 'NR>=1&&NR<=5{print}NR>=6{exit}' file

# print selection of lines 
awk 'NR==994123||NR==1002451||NR==1010123{print}NR>1010123{exit}' file
于 2013-02-05T14:11:10.963 に答える
0

パイソンでは:

readThisFile = open('YOURFILE')
outputFile = open('OUTPUT', w)

for actualline, linetext in enumerate(readThisFile):
    if actualline == WANTEDLINE
        outputFile.write(linetext)
    else:
        pass

必要に応じて、そのスクリプトを引数で動作するように変更できます (getline.py 1234 など)。

于 2013-02-05T14:16:32.883 に答える