重量が500Mbに達する巨大な.xmlファイルがありますが、grepできる既知の場所から始めていくつかのテキストを抽出したいと思います。
grep の場合、キーワードが表示される場所は表示されますが、行番号は表示されません。最初のgrepから200行を抽出する必要がある場合はどうなりますか?
答え1
grep -A200 searchword file.xml
各ゲームの後に200行を一覧表示するために使用できます。searchword
は検索中の単語であり、file.xml
XML ファイル名でもあります。
-B200
各ゲーム前の200行、-C200
前の200行、試合後の200行を一覧表示することもできます。
grepやregexpを使用するよりも適切なXMLパーサーを選択する方がほぼ常に良い選択であることに注意してください。
答え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を押して検索できます。