awk로 생성된 파일의 샘플 이름 문제

awk로 생성된 파일의 샘플 이름 문제

다음과 같은 데이터가 있습니다.

dir1
  |___dir2
         |___dir3
               |____files
                      |____TGH4_1.tar.gz
                      |____TGH4_2.tar.gz
                      |____IOP5_1.tar.gz
                      |____IOP5_2.tar.gz
                      |____RGH2_btre_1.tar.gz
                      |____RGH2_btre_2.tar.gz
                      |____QWE6_btre_1.tar.gz
                      |____QWE6_btre_2.tar.gz

폴더 안에 다음 코드를 사용하여 dir3스크립트를 만들었습니다 .test.awk

BEGIN {
    FS="[/_]"; OFS="\t"
    print "sample", "Second", "Third"
}
NR%2 { second = $0; next }
{ print $2, second, $0 }

다음을 사용하여 test.awk파일을 만들었습니다 .

printf '%s\n' $PWD/files/* | awk -f test.awk > test.txt

내가 얻는 결과는 test.txt다음과 같습니다.

sample  Second  Third
dir1    /dir1/dir2/dir3/H0032/files/TGH4_1.tar.gz   /dir1/dir2/dir3/H0032/files/TGH4_2.tar.gz
dir1    /dir1/dir2/dir3/H0032/files/IOP5_1.tar.gz   /dir1/dir2/dir3/H0032/files/IOP5_2.tar.gz
dir1    /dir1/dir2/dir3/H0032/files/RGH2_btre_1.tar.gz  /dir1/dir2/dir3/H0032/files/RGH2_btre_2.tar.gz
dir1    /dir1/dir2/dir3/H0032/files/QWE6_btre_1.tar.gz  /dir1/dir2/dir3/H0032/files/QWE6_btre_2.tar.gz

출력은 다음과 같아야 합니다.

sample  Second  Third
TGH4    /dir1/dir2/dir3/H0032/files/TGH4_1.tar.gz   /dir1/dir2/dir3/H0032/files/TGH4_2.tar.gz
IOP5    /dir1/dir2/dir3/H0032/files/IOP5_1.tar.gz   /dir1/dir2/dir3/H0032/files/IOP5_2.tar.gz
RGH2_btre   /dir1/dir2/dir3/H0032/files/RGH2_btre_1.tar.gz  /dir1/dir2/dir3/H0032/files/RGH2_btre_2.tar.gz
QWE6_btre   /dir1/dir2/dir3/H0032/files/QWE6_btre_1.tar.gz  /dir1/dir2/dir3/H0032/files/QWE6_btre_2.tar.gz

답변1

변화:

BEGIN { FS="[/_]" ... }
...
{ print $2, second, $0 }

도착하다:

BEGIN { FS="/" ... }
...
{
    sample = $NF
    sub(/_[^_]*$/,"",sample)
    print sample, second, $0
}

dir1귀하의 코드는 주어진 FS 설정에 대한 두 번째 필드이기 때문에 인쇄 중이며 /dir1/dir2/dir3/H0032/files/TGH4_2.tar.gz귀하의 코드는 이를 표시하고 있습니다 print $2....

관련 정보