【发布时间】:2017-03-29 14:12:44
【问题描述】:
我有以下 bash 脚本:
for file in *.gz; do
zgrep @ $file | awk '{split($0,a,":");
print $file"\t@RID\tT1:"a[1]"\tT2:"a[2]"\tT3:"a[3]}' > out.csv;
done
我想创建一个输出 csv/tbi 文件,该文件的文件名放置在通过 awk 管道传输的 zgrep 输出的第一列中。
错误是:
"awk: 非法字段 $(), name "file" 输入记录号 1, file
源代码行号 2"
我希望得到这个:
列标题: (这些不需要在实际的输出文件中,为了清楚起见,我只是把它放在这里,因为我找不到如何用 stackoverflow 上的选项卡分隔):
文件名 |摆脱 | T1 | T2 | T3
输出行:
FILENAME.gz @RID T1:text1 T2:text2 T3:text3
...这里还有更多行...
如果我在打印命令中删除 $file 它将起作用(不用说它省略了文件名)。我在 awk 调用内部和外部尝试了以下选项,但无济于事:
-v i=$file
任何建议或解决方法将不胜感激。
【问题讨论】: