最初の行が特定のパターンと一致する場合にのみファイルの内容を印刷する方法は?

最初の行が特定のパターンと一致する場合にのみファイルの内容を印刷する方法は?

私はファイルの最初の行が特定のパターンと一致することを確認し、一致した場合はファイルを印刷したいスクリプトを書いています。この目標をどのように達成できますか?

スキーマを確認する方法は?パターンを確認して出力に応じて何かをする方法がありますか..

編集:この質問を見てください。https://stackoverflow.com/questions/5536018/how-to-get-match-regex-pattern-using-awk-from-file

私はこのようにしたいが、そのうちの誰も私には適していません。デフォルトでは、最初の行が正規表現パターンと一致することを確認し、それに基づいてファイル行を印刷したいと思います。

ベストアンサー1

あなたはこれを行うことができますed

ed -s infile <<\IN 2>/dev/null
1s/PATTERN/&/
,p
q
IN

ここでの秘訣はPATTERNオンラインで自分を置き換えることです1sted指定したパターンが存在しない場合はエラーが発生するため(ファイル全体の印刷)、,p成功した場合にのみ実行されます。1s/PATTERN/&/

または以下を使用してsed

sed -n '1{
/PATTERN/!q
}
p' infile

q最初の行が!()と一致しない場合はこれがPATTERN行われ、そうでない場合はpすべての行が印刷されます。
または指摘したようにトビースペート、GNUを使用するsed

sed '1{/PATTERN/!Q}' infile

Qと同じqですが、パターンスペースを印刷しません。

おすすめ記事