마지막 값에서 텍스트 빼기

마지막 값에서 텍스트 빼기

아래와 같은 텍스트 파일이 있습니다. 확장자를 기준으로 파일 형식을 확인하고 작업을 수행하고 싶습니다.

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해당 특정 패턴과 일치하는 텍스트 줄을 발견할 때 수행할 실제 작업으로 바꿔야 하는 자리 표시자입니다.

관련 정보