使用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
我想将前四列留空,然后我想在最后四列中添加不带扩展名的文件名。我有文件 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