"time spent"大きなテキスト ファイルがあります。このテキスト ファイルに含まれる行を確認したいので、次を使用します。
grep -in "time spent" myfile.txt
しかし、私は 50000 より後の行だけに関心があります。出力では、50000 より後の「経過時間」を含む行を確認したいと考えています。これを行う方法はありますか?
それを尾行してからgrepすることができます:
tail -n +50000 myfile.txt | grep -in "time spent"
任意の 2 行番号の間の grep に対する回答:
Using sed and grep:
sed -n '1,50000p' someFile | grep < your_string >
または、 を使用することもできます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 行目から$最後の行を意味するように指示するだけです。
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