27

"time spent"大きなテキスト ファイルがあります。このテキスト ファイルに含まれる行を確認したいので、次を使用します。

grep -in "time spent" myfile.txt

しかし、私は 50000 より後の行だけに関心があります。出力では、50000 より後の「経過時間」を含む行を確認したいと考えています。これを行う方法はありますか?

4

4 に答える 4

48

それを尾行してからgrepすることができます:

tail -n +50000 myfile.txt | grep -in "time spent"
于 2012-10-28T14:28:54.233 に答える
7

任意の 2 行番号の間の grep に対する回答:

Using sed and grep:

sed -n '1,50000p' someFile | grep < your_string >
于 2016-07-26T22:56:30.307 に答える
6

または、 を使用することもできますsed。 次のようsedに模倣するために使用できます。grep

sed -n 's/pattern/&/p'

デフォルトsedでは、置換が行われなくてもすべての行が出力されます。-nとmakeの組み合わせは、置換が発生した行のみ/pを出力します。sed最後に、それ自体で置き換えることを意味するpatternによって置き換えます。結果: を模倣しました。&patterngrep

sed行動するラインの範囲を取ることができるようになりました。あなたの場合:

sed -n '50000,$s/time spent/&/p' myfile.txt

範囲を指定する形式は次のとおりです。start,end sed に 50000 行目から$最後の行を意味するように指示するだけです。

于 2013-08-22T19:00:25.903 に答える
1

head+grepおよび group コマンドを使用{...}して、同じ入力を共有できます。

{ head -n 50000 >/dev/null; grep -i PATTERN; } < infile

head入力全体を消費するのではなく、最初の 50000 行のみを取得し、それらを にダンプし/dev/nullます。残りの行は によって処理されgrepます。
行番号を前に付ける必要がある場合 ( のようにgrep -in)、次を使用できますawk

awk 'NR>50000 && tolower($0)~/PATTERN/{print NR ": " $0}' infile
于 2015-03-17T16:43:23.437 に答える