"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
によって置き換えます。結果: を模倣しました。&
pattern
grep
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