以下のテキストファイルがあります。拡張子に基づいてファイルの種類を確認し、操作を実行したいと思います。
Example.2019.txt
Example.test.2019.txt
Example.test.2019.txt.gz
Example.test.2019.txt.Z
私はcut -d'.' - f3
最初の録音形式を使用しています。効果があるしかし、他人に奉仕するときはうまくいきません。また、次のawk
コマンドを試しました。
awk -F'\t' '{print $(NF-sub(/..+$/,"",$1)1}'
最後のフィールドで最初に現れるポイントを取得し、値を印刷しますが、構文エラーが発生したように見えるため、機能しません。
答え1
while IFS= read -r line; do
case $line in
*.txt)
some_txt_action
;;
*.gz)
some_gz_action
;;
*.Z)
some_Z_action
;;
*)
echo 'Did not match a pattern'
esac
done <filelist
または、ファイル名のサフィックスをより正確に一致させるには
while IFS= read -r line; do
case $line in
*.txt)
some_txt_action
;;
*.txt.gz)
some_txtgz_action
;;
*.txt.Z)
some_txtZ_action
;;
*)
echo 'Did not match a pattern'
esac
done <filelist
上記の両方のループはファイルからテキスト行を読み取りますfilelist
。次に、ファイルから読み取った行の終わりに基づいて操作を実行します。
コード内にあるのは、some_XXX_action
特定のパターンに一致するテキスト行を見つけるときに実行する実際の操作に置き換える必要があるプレースホルダーです。