【发布时间】:2019-09-02 19:22:59
【问题描述】:
这里我问了同样的问题,得到了正确答案:How can I find if a row exists in a file and add a column with the filename using awk?
按照@RavinderSingh13 的建议,我打开了这个新帖子,提供了更多详细信息。
我有一个像这样的文件作为数据库(db_file.txt):
CHROM POS REF ALT
chr1 10 T A
chr1 12 T G
chr1 12 T C
还有大量文件,我需要检查数据库文件中是否已经存在一行。如果存在一行,我必须添加一个带有文件名的新列。
两个文件的例子
文件1:
CHROM POS REF ALT
chr1 10 T A
chr1 13 T C
文件2:
CHROM POS REF ALT
chr1 12 T G
chr1 10 T A
预期输出:
CHROM POS REF ALT
chr1 10 T A file1 file2
chr1 12 T G file2
chr1 12 T C
我正在尝试使用此代码,但我没有得到我需要的东西:
for i in `ls directory`;do
awk 'FNR==1 && FNR==NR{print;next}
FNR==NR{a[$0]=FILENAME;next}FNR>1{
print $0,$0 in a?OFS a[$0]:""}' $i $directory/db_file.txt
done
【问题讨论】: