아래와 같은 텍스트 파일이 있습니다. 확장자를 기준으로 파일 형식을 확인하고 작업을 수행하고 싶습니다.
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
해당 특정 패턴과 일치하는 텍스트 줄을 발견할 때 수행할 실제 작업으로 바꿔야 하는 자리 표시자입니다.