• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:sedを使って複数ファイルの先頭行を表示)

sedを使って複数ファイルの先頭行を表示する方法

このQ&Aのポイント
  • sedコマンドを使って複数のファイルの先頭行を表示する方法を解説します。
  • headコマンドの場合はファイル名と結果が分かれて表示されますが、sedコマンドを使用するとファイルごとに結果が表示されます。
  • sedコマンドの-nオプションと行番号指定を組み合わせることで、各ファイルの先頭行を取得することができます。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

awk を使いましょう。 awk 'FNR==1{print FILENAME,$0}' *.txt

abc999xyz
質問者

お礼

ありがとうございます。 awkのことを忘れていました。

その他の回答 (3)

  • kumoz
  • ベストアンサー率64% (120/185)
回答No.4

sed でファイル名を取得できないと思いますので、No2 の回答のように AWK を使うか、別の言語を使うことになります。。なお、head の出力を sed で加工することはできます。 head -n 1 *.txt | sed 'N;$!N;s/==> \(.*\)<==\n/\1/;s/\n//' Perl では、次のようなコマンドラインになります。 perl -ne 'if ($. == 1) {print "$ARGV $_"; close ARGV;}' *.txt

abc999xyz
質問者

お礼

ありがとうございます。 他のコマンドとの組み合わせか、他の方が書いていただいた通り awk、perlにするかですね。

  • kumoz
  • ベストアンサー率64% (120/185)
回答No.3

GNU sed だけかも知れませんが、ファイルを別々に処理する -s オプションがあります。 sed -sn '1p' *.txt

abc999xyz
質問者

お礼

ありがとうございます。 -s があるなんて知りませんでした。 manやsed --help で調べていない自分がいけないのかも。 -s でやるとファイル名がでないんですね。

  • memphis
  • ベストアンサー率40% (975/2395)
回答No.1

headコマンドでできますよ。 head -q -n 1 *.txt

abc999xyz
質問者

お礼

ありがとうございます。 -q があるなんて知りませんでした。 manで調べていない自分がいけないのかも。 -q でやるとファイル名がでないんですね。

関連するQ&A