既知の場所の非常に大きなファイルから複数行を抽出する方法は? [閉鎖]

既知の場所の非常に大きなファイルから複数行を抽出する方法は? [閉鎖]

重量が500Mbに達する巨大な.xmlファイルがありますが、grepできる既知の場所から始めていくつかのテキストを抽出したいと思います。

grep の場合、キーワードが表示される場所は表示されますが、行番号は表示されません。最初のgrepから200行を抽出する必要がある場合はどうなりますか?

答え1

grep -A200 searchword file.xml各ゲームの後に200行を一覧表示するために使用できます。searchwordは検索中の単語であり、file.xmlXML ファイル名でもあります。

-B200各ゲーム前の200行、-C200前の200行、試合後の200行を一覧表示することもできます。

grepやregexpを使用するよりも適切なXMLパーサーを選択する方がほぼ常に良い選択であることに注意してください。

https://stackoverflow.com/a/1732454/131264

答え2

を使用して行範囲を抽出できますawk。次のコマンドは、FILENAMEから2行から6行(含む)を抽出してOUTPUTに書き込みます。

cat FILENAME | awk 'NR >= 2 && NR <= 6' > OUTPUT

次のように、既知の場所からファイルの最後まで抽出することもできます。

cat FILENAME | awk 'NR >= 2' > OUTPUT

NR「ナンバーレコード」を意味します。

grepを使用して行番号を動的に取得し、それをawkコマンドに渡してその行を抽出することもできます。

LINE_START=`grep -nr "STRING" FILENAME | grep -o '^[0-9]\+'`
cat FILENAME | awk 'NR >= $LINE_START' > OUTPUT

答え3

実際には、Notepad ++を使用して簡単に開き、Ctrl + Fを押して検索できます。

関連情報