行から始まるUnixの猫


40

特定の行(70000などの大きな数字)から始まるファイルから出力する最良の方法は何ですか。何かのようなもの:

cat --line=70000 <file>

回答:


60

テールをより正確に見てみると、それは--lines = + Nスイッチです。

tail --lines=+100 <file>

ワオ。これをLinuxで8年間使用した後でも、私はこれを知りませんでした!私は常にbash fnを使用しました!ありがとう!getFromLine(){lineno = wc -l $1 | awk '{print $1}'; lineno = expr $lineno - $2; tail -n $ lineno $ 1; }
secureBadshah 2009年

2
注記として、これはMountain Lion(Darwin Kernelバージョン13.1.0)では機能しません。マウンテンライオンのバリアントはtail -n
Kaushik Ghose 14

22

最も明白な方法はtailです。構文は、使用しているOSによって若干異なる場合があります。

tail -n +70000

あなたが得ることができない場合はtail仕事に、あなたは使うことができsedますが、それは遅くに終わるかもしれません。

sed -pe '1,69999d'

tailでうまく働いたのMinGW(600メガバイトのテキストファイルに)。実行時間はわずか数秒でした(ただし、入力ファイルは既にファイルキャッシュに存在していた可能性があります)。
ピーターモーテンセン

2

行番号の代わりに、指定されたを含む行からリストを開始する必要がある場合$phraseは、次を試してください。

more -1000 +/"$phrase" yourfilename | sed '1,4d'

-1000は、最大1000行のテキストを継続的にリストします。必要に応じてこれを変更できます。このsedコマンドはmore、空白行、メッセージ "... skipping"、および目的の開始行の前の2行を含むによって自動的に挿入された出力の最初の4行を切り取ります。これはシステムによって異なる場合があると思います。


2

awkコマンドでNRパラメーターを使用できます。

cat <file> | awk '{if (NR>=7000) print}'

2
このコマンドは他の制限とともに使用できます。サンプルとして:cat messages | awk '{if (NR>=7000 && NR <7003) print}'行7000、7001および7002のみを示します。
ゲフォルジ

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.