ワイルドカードを含むパイプヘッダーとテール

ワイルドカードを含むパイプヘッダーとテール

同じディレクトリに複数のファイルがあるので、15日から20日までの連続した間隔で特定の行を印刷したいと思います。

単一ファイルの場合は機能しますhead -n20 file.txt | tail -n6が、ワイルドカードパターンで機能させるにはどうすればよいですか?例えば、そのディレクトリ内のすべてのtxtファイルについて*.txt

head -n20 *.txt | tail -n6 # this only crops results of head -n20

編集1:解決策も知っていますが、forワイルドカードでも機能する統合された方法で複数のタスクのパイプラインを定義する方法を学びたいと思います。

psには、wildcards==> file.txt <==と組み合わせるときに提供されるような標準ヘッダーがあるかもしれませんが、これはあまりにも多くを必要とします。headtail

ppsはUbuntuを使用していますが、UNIX全体のアプローチが優れています。

ベストアンサー1

この一行はどうですか?

for f in *.txt; do echo -e "\n==> $f <=="; head -n 20 "$f" | tail -n 6; done

現在のディレクトリで実行されている場合は、globを使用して.txtすべて*.txtのファイルを繰り返し、ヘッダーを印刷し、各ファイルに対してヘッドとテールを実行します。

おすすめ記事