grepコマンドを使用して最初の行を印刷するには?

grepコマンドを使用して最初の行を印刷するには?

というファイルがあります。コマンドを使用して最初の行だけを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)。

ed1969年に導入された対話型ラインエディタですが、現在システムにインストールされている可能性が高いです(標準POSIXツールです)。 、およびの特定の機能のショートカットまたはエイリアスとして考えることができる、つまり(非対話型)ストリームエディタである「stream-」grepからそれを取得します。ededseded

代わりにこれを試してみましょうsed

sed -n '1p' file.txt

文字列は、指定されたアドレスに対応する行(、最初の行)を印刷()する1p小さなsed「スクリプト」です。ちなみに、editコマンドは(驚くべきことに)エディタで同じことを行います。p11ped

スクリプトが明示的に印刷しないすべての項目の出力を抑制するので、-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 |

関連情報