というファイルがあります。コマンドを使用して最初の行だけをfile.txt
印刷するにはどうすればよいですか?grep
答え1
これはgrepのユニークなアプリケーションですが、GNU grepを使って行うことができます。
grep -m1 "" file.txt
空の式が何でも一致するために機能し、-m1
最初の一致後にgrepが終了します。
-m NUM, --max-count=NUM
Stop reading a file after NUM matching lines.
答え2
これは何もないgrep
。 「grep」という名前自体は「グローバル正規表現を検索して印刷します。これがこのed
コマンドが実行する操作g/re/p
です(与えられた正規表現についてre
)。
ed
1969年に導入された対話型ラインエディタですが、現在システムにインストールされている可能性が高いです(標準POSIXツールです)。 、およびの特定の機能のショートカットまたはエイリアスとして考えることができる、つまり(非対話型)ストリームエディタである「stream-」grep
からそれを取得します。ed
ed
sed
ed
代わりにこれを試してみましょうsed
:
sed -n '1p' file.txt
文字列は、指定されたアドレスに対応する行(、最初の行)を印刷()する1p
小さなsed
「スクリプト」です。ちなみに、editコマンドは(驚くべきことに)エディタで同じことを行います。p
1
1p
ed
スクリプトが明示的に印刷しないすべての項目の出力を抑制するので、-n
取得するのはファイルの最初の行だけですfile.txt
。
または:
sed '1q' file.txt
これはファイルのすべての行を印刷しますがq
(印刷後)、行1で終了します()。これはまったく同じですhead -n 1 file.txt
。
POSIX規格では(head
コマンドの基本head -n N
)非常に似た内容を言います(議役)。sed 'Nq'
つまり、「各行を印刷してその行で終了します」N
。既存のUnix実装との対称性と下位互換性head
のため、標準に含まれています。tail
答え3
最初の行に一意の文字列がない場合、grepだけではこれを行うことはできません。 head -n 1 file.txt
その場で働きます。
パターンに一致する最初の行だけを印刷するには、ヘッドをgrepにパイプします。
head -n 1 * | grep [pattern]
答え4
これがdf出力からヘッダーを取得するために使用する方法です。デフォルトでは、両方のコマンドは ";"順番に実行されます。 df -h |head-n1; df -h |