非常に大きなファイルでは、文字列の位置 (行番号) を見つけて、その文字列の上下の 2 行を抽出する必要があります。
今すぐこれを行うには、vi を起動して文字列を見つけ、その行番号をメモして vi を終了し、sed を使用してその文字列を囲む行を抽出します。
このプロセスを合理化する方法はありますか...理想的には、viをまったく実行する必要はありません。
非常に大きなファイルでは、文字列の位置 (行番号) を見つけて、その文字列の上下の 2 行を抽出する必要があります。
今すぐこれを行うには、vi を起動して文字列を見つけ、その行番号をメモして vi を終了し、sed を使用してその文字列を囲む行を抽出します。
このプロセスを合理化する方法はありますか...理想的には、viをまったく実行する必要はありません。
おそらく次のようにgrepを使用します:
grep -n -2 your_searched_for_string your_large_text_file
ほぼ期待どおりの結果が得られます
-n : grep に行番号を出力するよう指示します
-2 : 追加の 2 行を出力します (もちろん、必要な文字列も)
できるよ
grep -C 2 yourSearch yourFile
ファイルで送信するには、次のようにします。
grep -C 2 yourSearch yourFile > result.txt
grep -n string file
ファイルを開かずに行番号を検索するために使用します。
を使用cat -n
して行番号を表示し、次に使用awk
して行番号を取得して、行番号grep
を抽出できます。
cat -n FILE | grep WORD | awk '{print $1;}'
あなたが与えるならば、grep
すでにあなたが言及したことをしますが-C 2
(2行の上/下):
grep -C 2 WORD FILE
次のように、grep-A
と-B
オプションを使用して実行できます。
grep -B 2 -A 2 "searchstring" | sed 3d
grep はその行を見つけて前後に 2 行のコンテキストを表示し、後で 3 行目を sed で削除します。