使用awk在某些列添加不带扩展名的文件名

add filename without the extension at certain columns using awk

我想将前四列留空,然后我想在最后四列中添加不带扩展名的文件名。我有文件 file.frq 并继续。稍后我会将其应用于循环中的 200 个文件。

输入

CHR     POS            REF     ALT     AF      HOM     Het     Number of animals
1       94980034        C       T       0       0       0       5
1       94980057        C       T       0       0       0       5

期望输出

                                      file     file    file    file
CHR     POS            REF     ALT     AF      HOM     Het     Number of animals
1       94980034        C       T       0       0       0       5
1       94980057        C       T       0       0       0       5

我从

试过这个
awk '{[=12=]=(NR==1? " \t"" \t"" \t"" \t":FILENAME"\t") "\t" [=12=]}7' file2.frq 

但它给了我这个:

                                        CHR     POS     REF     ALT     AF      HOM     Het     Number of animals
file2.frq               1       94980034        C       T       0       0       0       5
file2.frq               1       94980057        C       T       0       0       0       5
file2.frq               1       94980062        G       C       0       0       0       5

我也试过这个

awk -v OFS="\t" '{print FILENAME, =" ",=" ",=" ", =" ", - end}' file2.frq

但它给了我这个

                                        CHR     POS     REF     ALT     AF      HOM     Het     Number of animals
file2.frq               1       94980034        C       T       0       0       0       5
file2.frq               1       94980057        C       T       0       0       0       5

任何帮助将不胜感激!

假设您的输入像您想要的输出一样以制表符分隔:

awk '
    BEGIN { FS=OFS="\t" }
    NR==1 {
        orig = [=10=]
        fname = FILENAME
        sub(/\.[^.]*$/,"",fname)
        === = ""
        === = fname
        print
        [=10=] = orig
    }
1' file.txt
                                file    file    file    file
CHR     POS     REF     ALT     AF      HOM     Het     Number of animals
1       94980034        C       T       0       0       0       5
1       94980057        C       T       0       0       0       5

要以 table 格式查看它:

$ awk '
    BEGIN { FS=OFS="\t" }
    NR==1 {
        orig = [=11=]
        fname = FILENAME
        sub(/\.[^.]*$/,"",fname)
        === = ""
        === = fname
        print
        [=11=] = orig
    }
1' file.txt | column -s$'\t' -t
                         file  file  file  file
CHR  POS       REF  ALT  AF    HOM   Het   Number of animals
1    94980034  C    T    0     0     0     5
1    94980057  C    T    0     0     0     5