毎回異なるファイル名にリダイレクトされる複数のファイルを Grep

毎回異なるファイル名にリダイレクトされる複数のファイルを Grep

.tsvファイルでいっぱいのディレクトリがあり、各ファイルに対してgrepコマンドを実行して特定のテキスト行セットを抽出し、同様のファイル名を持つ関連テキストファイルに保存しようとしています。たとえば、ファイルを1つだけgrepする場合、grepコマンドは次のようになります。

grep -h 8-K 2008-QTR1.tsv > 2008Q1.txt

しかし、次のtsvファイルのリストがあります。

2008-QTR1.tsv
2008-QTR2.tsv
2008-QTR3.tsv
2008-QTR4.tsv
2009-QTR1.tsv
2009-QTR2.tsv
2009-QTR3.tsv
...

grep の後は、次のように保存する必要があります。

2008Q1.txt
2008Q2.txt
2008Q3.txt
2008Q4.txt
2009Q1.txt
2009Q2.txt
2009Q3.txt

どんなアイデアがありますか?

ベストアンサー1

ksh93/bash/zshで単純なforループとパラメータ拡張を介して:

for f in *-QTR*.tsv
do 
  grep 8-K < "$f" > "${f:0:4}"Q"${f:8:1}".txt
done

今回はgrep、ファイル(ファイル名に「-QTR」とファイル名の末尾に「.tsv」が必要なワイルドカードパターンに基づいてファイルリストが生成されます)を実行すると、出力がファイルにリダイレクトされます。名前に基づいて慎重に構成されています。

  • ファイル名の最初の4文字 - 年
  • この手紙Q
  • ファイル名の9番目の文字 - Quarter

おすすめ記事