タグ付けされた質問 「head」

ファイルの最初のxバイトまたは行数を出力するheadコマンドに関する質問に使用します

6
巨大なファイルのcat行Xから行Y
私は(> 2GB)巨大なテキストファイルを持っていると私はしたいとcatラインXにY(例えば57890010から57890000)。 私が理解から私は、配管によってこれを行うことができますheadにtail、すなわち、またはその逆 head -A /path/to/file | tail -B または代わりに tail -C /path/to/file | head -D ここでA、B、CおよびDファイル内の行の数から計算することができる、XとY。 しかし、このアプローチには2つの問題があります。 あなたは計算する必要がありA、B、CとD。 コマンドは、読みたいと思うよりもはるかに多くの行pipeを相互に送信できます(たとえば、巨大なファイルの途中で数行だけを読んでいる場合) シェルを動作させて、必要な行を出力する方法はありますか?(Xとのみを提供しながらY)?
132 tail  cat  large-files  head 


9
ファイルの最初の数行と最後の数行を表示するコマンド
多くの行を持つファイルがあり、各行には開始時にタイムスタンプがあります。 [Thread-3] (21/09/12 06:17:38:672) logged message from code..... そのため、このログファイルから2つのことを頻繁にチェックします。 グローバル条件と開始時刻を含む最初の数行も示されています。 最後の数行は、終了ステータスに他の情報が含まれています。 ファイルの最初と最後の数行だけを表示できる、便利な単一のコマンドはありますか?

1
bashでnull区切りの入力で「head」と「tail」を行う方法は?
findコマンドは、ファイル名をヌル区切りの文字列(指定されている場合-print0)として出力xargsし、-0オプションをオンにしてそれらを使用できます。しかし、その間に、そのファイルのコレクションを操作するのは難しいです- sortコマンドには-zスイッチがあり、それによりそれらのファイルを並べ替えることができますがhead、tail持っていません。 どのようにして行うことができますheadし、tail便利な方法でそれらのヌル区切り入力に?(私はいつでも短くて遅いルビースクリプトを作成できますが、もっと良い方法があるといいのですが)

3
頭が余分なキャラクターを食べる
次のシェルコマンドは、入力ストリームの奇数行のみを出力するものと想定されていました。 echo -e "aaa\nbbb\nccc\nddd\n" | (while true; do head -n 1; head -n 1 >/dev/null; done) ただし、代わりに最初の行を出力しますaaa。 -c(--bytes)オプションを使用した場合、同じことは起こりません。 echo 12345678901234567890 | (while true; do head -c 5; head -c 5 >/dev/null; done) このコマンド1234512345は期待どおりに出力します。ただし、これはユーティリティのcoreutils実装でのみ機能しheadます。busyboxのの出力がちょうどあるので、実装はまだ、余分な文字を食べます12345。 この特定の実装方法は、最適化のために行われていると思います。行の終わりがわからないため、読む必要がある文字数がわかりません。入力ストリームから余分な文字を消費しない唯一の方法は、バイト単位でストリームを読み取ることです。ただし、一度に1バイトずつストリームから読み取るのは遅い場合があります。したがってhead、入力ストリームを十分な大きさのバッファに読み込んでから、そのバッファ内の行をカウントすると思います。 --bytesオプションが使用される場合にも同じことは言えません。この場合、読み取る必要があるバイト数がわかります。したがって、このバイト数を正確に読み取ることができますが、それ以上はできません。corelibsの実装は、この機会を使用しますが、busyboxのの 1にはない、それはまだバッファに必要以上のバイトを読み取ります。おそらく実装を簡素化するために行われます。 質問です。headユーティリティが入力ストリームから要求されたより多くの文字を消費することは正しいですか?Unixユーティリティには何らかの標準がありますか?そして、もしあれば、この動作を指定しますか? PS を押しCtrl+Cて上記のコマンドを停止する必要があります。Unixユーティリティは、以降の読み取りで失敗しませんEOF。押したくない場合は、より複雑なコマンドを使用できます。 echo 12345678901234567890 | (while true; do head -c 5; head -c …

3
変換せずにバイトを逐語的にコピーするために、bashでバイナリを使用するにはどうすればよいですか?
私は、無数の理由でc ++コードをbashに変換しようと野心的に取り組んでいます。 このコードは、完全にバイナリで記述および構造化されたサブフィールドに固有のファイルタイプを読み取り、操作します。最初のバイナリ関連のタスクは、ヘッダーの最初の988バイトをそのままコピーし、残りの情報を生成しながら書き込みを続けることができる出力ファイルに入れることです。 私の現在のソリューションは機能していないと確信しており、現実的にはこれを判断するための良い方法を見つけていません。したがって、実際に正しく記述されていても、これをテストする方法を確認する必要があります! これは私が今やっていることです: hdr_988=`head -c 988 ${inputFile}` echo -n "${hdr_988}" > ${output_hdr} headInput=`head -c 988 ${inputTrack} | hexdump` headOutput=`head -c 988 ${output_hdr} | hexdump` if [ "${headInput}" != "${headOutput}" ]; then echo "output header was not written properly. exiting. please troubleshoot."; exit 1; fi hexdump / xxdを使用してファイルのこの部分をチェックアウトすると、ほとんどの部分を正確に読み取ることはできませんが、何かがおかしいようです。また、比較のために記述したコードは、2つの文字列が同一であるかどうかだけを示しており、希望どおりにコピーされているかどうかは示していません。 これをbashで行うより良い方法はありますか?native-binaryのバイナリバイトをそのままコピー/読み取りして、そのままファイルにコピーできますか?(そして理想的には変数としても保存すること)。
14 bash  binary  head 

1
終了しない「ヘッド」の代わりに?
最初のn行を印刷するユーティリティが必要ですが、実行を続け、残りの行を吸い上げますが、印刷はしません。実行を継続する必要があるプロセスの出力で端末を圧倒しないために使用します(結果をファイルに書き込みます)。 できると思いましたがprocess | {head -n 100; cat > /dev/null}、もっとエレガントなものはありますか?
13 head 

3
ヘッド/テールへの負の引数
この質問の変種は確かにさまざまな場所で何度か尋ねられていますが、私はM運のないファイルから最後の行を削除しようとしています。 二番目に投票の回答で、この質問は、ファイルの最後の行を取り除くために、次のことをお勧めします: head -n -1 foo.txt > temp.txt ただし、OSXとZshでそれを試すと、次のようになります。 head: illegal line count -- -1 何故ですか?どのように私は削除することができM 、最後の行と最初の N与えられたファイルの行を?

2
入力の最初のN行を削除するコマンド
バックグラウンド SSHサーバーを実行しており、このユーザーを削除する必要があります。このユーザーは、最初に強制終了する必要のあるいくつかのプロセスを現在実行しているため、削除できません。 これは、現在使用しているユーザーのすべてのプロセスIDを見つけるために現在使用しているパイプラインです。 ps -u user | awk '{print $1;}' 出力は次のようになります。 PID 2121 2122 2124 2125 2369 2370 これをパイプkill -9してすべてのプロセスを強制終了し、次のようにこの愚かなユーザーを削除できます。 ps -u user | awk '{print $1;}' | sudo xargs kill -9 しかし、これはPIDヘッダーのために機能しません: kill: failed to parse argument: 'PID' 質問 入力の最初の行を削除するには、単純なUnixコマンドが必要だと考えています。 tailこれに使用できることは承知していますが、表示する行数を正確に把握するために、入力に含まれる行数をカウントしたくありません。 headまたはtail逆のようなものを探しています(ストリームの最初/最後の部分のみを表示する代わりに、ストリームの開始/終了以外のすべてを表示します)。 注意 コマンドの| grep [[:digit:]]後に追加するだけでこの問題を解決できましたawkが、他のシナリオでは非常に役立つと思うので、ファイルの最初の行を削除する方法を探しています。
11 command-line  sed  awk  tail  head 

3
bashで2つのファイルの先頭を比較する
私が行うことができますdiff filea filebファイルの違いを見るために。head -1 fileafileaまたはfilebの最初の行を表示することもできます。これらのコマンドを組み合わせて、fileaの最初の行とfilebの最初の行の違いを表示するにはどうすればよいですか?
11 bash  shell  diff  head 

5
ヘッドとテールを使用して異なる行のセットを取得し、同じファイルに保存する
これは宿題ですが、具体的な宿題については質問しません。 1つのファイルからさまざまな行のセットを取得するには、ヘッドとテールを使用する必要があります。6-11行目と19-24行目と同じように、両方を別のファイルに保存します。私は追加などを使用してこれを行うことができることを知っています head -11 file|tail -6 > file1; head -24 file| tail -6 >> file1. しかし、私たちはそうなるとは思いません。 headコマンドとtailコマンドを組み合わせてファイルに保存する特定の方法はありますか?
10 tail  head 

3
フォルダーのファイルの17行目(またはそれ以下の場合は最後)を監視するにはどうすればよいですか?
私は現在使用しています watch head -n 17 * 動作しますが、17日までのすべての行も表示されます。基本的に、現在のアプローチで表示される各ファイルの最後の行のみを表示します。どうすればそれを達成できますか? 例 例として、行nrを減らします。7.に。 ファイルの例: 1 2 3 4 5 6 7 8 この行: watch head -n 7 * 出力 1 2 3 4 5 6 7 私が欲しいところ: 7
8 bash  head  watch 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.