7

非常に大きなファイルでは、文字列の位置 (行番号) を見つけて、その文字列の上下の 2 行を抽出する必要があります。

今すぐこれを行うには、vi を起動して文字列を見つけ、その行番号をメモして vi を終了し、sed を使用してその文字列を囲む行を抽出します。

このプロセスを合理化する方法はありますか...理想的には、viをまったく実行する必要はありません。

4

5 に答える 5

12

おそらく次のようにgrepを使用します:

grep -n -2 your_searched_for_string  your_large_text_file

ほぼ期待どおりの結果が得られます

-n : grep に行番号を出力するよう指示します

-2 : 追加の 2 行を出力します (もちろん、必要な文字列も)

于 2012-10-05T16:26:44.733 に答える
10

できるよ

grep -C 2 yourSearch yourFile 

ファイルで送信するには、次のようにします。

grep -C 2 yourSearch yourFile > result.txt
于 2012-10-05T16:26:49.990 に答える
4

grep -n string fileファイルを開かずに行番号を検索するために使用します。

于 2012-10-05T16:26:42.510 に答える
2

を使用cat -nして行番号を表示し、次に使用awkして行番号を取得して、行番号grepを抽出できます。

cat -n FILE | grep WORD | awk '{print $1;}'

あなたが与えるならば、grepすでにあなたが言及したことをしますが-C 2(2行の上/下):

grep -C 2 WORD FILE
于 2012-10-05T16:26:37.407 に答える
1

次のように、grep-A-Bオプションを使用して実行できます。

grep -B 2 -A 2 "searchstring" | sed 3d

grep はその行を見つけて前後に 2 行のコンテキストを表示し、後で 3 行目を sed で削除します。

于 2012-10-05T16:29:42.050 に答える