사용자 정의 grep 출력

사용자 정의 grep 출력

다음 샘플 줄이 포함된 DeployList.txt라는 파일이 있습니다.

Database/test.sql
Tivoli/jobstr01.js
Tivoli/res01.res
Tivoli/job01.job
Datastage/test.dsx

"Tivoli/"로 시작하는 줄을 찾아야 하는데, 먼저 .res 줄이 필요하고, 그 다음 .job, 마지막으로 .js 줄이 필요합니다. 다른 패턴도 따릅니다. 그래서 출력은 다음과 같습니다 ...

Tivoli/res01.res
Tivoli/job01.job
Tivoli/jobstr01.js

그래서 난 그때까지 갇혀있어...

grep -e ^Tivoli/ DeployList.txt

이 목적으로 더 이상 임시 파일을 만들고 싶지 않습니다.

답변1

GNU Awk > 4.0에서는 이와 같은 작업을 수행할 수 있습니다.

gawk -F'[.]' '
  BEGIN{
    i["res"]=3; i["job"]=2; i["js"]=1; 
    PROCINFO["sorted_in"]="@val_num_desc"
  } 
  /^Tivoli/ {
    a[$0]=i[$2]
  } 
  END{
    for (x in a) print x
}' DeployList.txt 
Tivoli/res01.res
Tivoli/job01.job
Tivoli/jobstr01.js

연관 배열은 i["res"]=3; i["job"]=2; i["js"]=1확장의 정렬 순서를 정의합니다. 다른 확장은 반환되므로 0마지막으로 정렬됩니다.

관련 정보