我有如下所示的包含三列的文本文件。
6:85406127 T:A 0.44
6:85406139 T:C 0.00
6:85406165 C:G 0.33
我想在第三列的扩展名之前添加文件名。
我想要的输出将是这样的:
CHR:POS REF:ALT Filename
6:85406127 T:A 0.44
6:85406139 T:C 0.0
6:85406165 C:G 0.33
然后我使用了这个命令:
for i in *.txt; do awk 'BEGIN{print "CHR:POS REF:ALT "${i%.*}"" {print}' $i ; done
但收到此错误消息
awk: cmd. line:1: BEGIN{print "CHR:POS REF:ALT "${i%.*}"" {print}
awk: cmd. line:1: ^ syntax error
答案1
如果您想打印正在awk
使用的文件名FILENAME
,但问题是,该项目未加载到 -block 中BEGIN
,因此您必须在第一条记录上执行此操作:
awk 'NR == 1 { print "Header-Col1","Header-Col2",FILENAME}
NR>=1 { print }' input_file
"\n"
如果需要,在标题行 ( ) 之后添加换行符。
答案2
解决方案:
for i in *.txt ; do awk -v fname="${i%.*}" 'NR == 1 { print "CHR:POS"," ","REF:ALT"," ",fname,"\n" }
NR >=1 { print }' $i > "${i%.*}_header.txt" ; done