同じディレクトリに複数のファイルがあるので、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 <==
と組み合わせるときに提供されるような標準ヘッダーがあるかもしれませんが、これはあまりにも多くを必要とします。head
tail
ppsはUbuntuを使用していますが、UNIX全体のアプローチが優れています。
ベストアンサー1
この一行はどうですか?
for f in *.txt; do echo -e "\n==> $f <=="; head -n 20 "$f" | tail -n 6; done
現在のディレクトリで実行されている場合は、globを使用して.txt
すべて*.txt
のファイルを繰り返し、ヘッダーを印刷し、各ファイルに対してヘッドとテールを実行します。