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設定の2番目のフィールドなので、印刷中で、あなた/dir1/dir2/dir3/H0032/files/TGH4_2.tar.gzのコードはそれを表示していますprint $2...

おすすめ記事