다음과 같은 데이터가 있습니다.
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...
.