2760行のファイルがあり、2740行にIDがあります。その結果、常に上から7行を出力する必要があります。一部のファイルにはより多くの行が含まれ、一部のファイルにはより少ない行が含まれていますが、出力は常に7行の値です。
私が使っているのはgrep 'PATTERN' | sed -n '7p' yyyymmdd*.log
パターンと一致しているようですが、ディレクトリで見つかった最初のファイルの7行を出力します。
誰もが私を正しい方向に押してもらえれば幸いです。
ベストアンサー1
特定のファイル名パターンと一致するには、各入力ファイルの7行が必要ですか?
awk 'FNR==7' file*
このawk
変数はFNR
現在の入力ファイルの行番号になります。 7の場合は、その行を印刷します。
またはGNUを使用してくださいsed
。
sed -n -s '7p' file*
GNUsed
オプションは、-s
入力ファイル間で内部ラインカウンタをリセットします(これは標準のGNU拡張ですsed
)。
いくつかの正規表現に基づいて結果をフィルタリングする必要がある場合、またはgrep 'PATTERN'
次のように出力をパイプ処理しますawk
。
awk 'FNR==7 && /PATTERN/' file*
またはGNUを使用してくださいsed
。
sed -n -s '7{/PATTERN/p}' file*
あなたの命令:
grep 'PATTERN' | sed -n '7p' yyyymmdd*.log
いくつかの問題:
- input がない場合は、
grep
標準入力ストリームから入力を待ちます。 sed
完全な入力ファイルセットから行7のみが選択されます(つまり、最初のファイルのみ)。対応するラインカウンタはファイル間でリセットされません。上記のようにsed
。-s
- パイプの2つの部分が接続されていません。
sed
では読めませんgrep
。 - 不要
grep
。 7行だけで済みます。