所以我的目标是提取目录中每个文件的第五行。我的目录中有一堆扩展名 (*.gjf) 文件,第五行总是“1 0”或“1 1”,没有引号。
到目前为止,我知道我可以提取这些值,但不能提取附加到它们的文件名。这是我一直在使用的代码。
awk 'FNR == 5' *.gjf
1 1
0 1
0 1
1 1
1 1
0 1
我希望我解析的文件特别像这样。
FILNAME: 1AH7A_TRP-16-A_GLU-9-A.gjf, 1, 1,
FILNAME: 1AH7A_TRP-198-A_ASP-197-A.gjf, 1 , 1,
FILNAME: 1BGFA_TRP-43-A_GLU-44-A.gjf, 0, 1,
FILNAME: CXQA_TRP-61-A_ASP-82-A.gjf, 1, 1,
我希望文件名位于这些值之前,因为我想在 R 中以逗号分隔值文件的形式运行这些文件的统计信息(而且我非常有能力做到这一点),而且对我来说非常重要的是我可以证明有我的文件中只有两个模式,模式的顺序为“0 1”和“1 0”。
我什至尝试列出文件
我尝试这样做:
grep -l "" *.gjf | awk 'FNR == 5' *.gjf
因为我知道我可以grep文件的存在,并且可以将列表打印到屏幕上。但我想我只是将它传递给了 awk,因此它进行了计算。
1 1
1 1
0 1
1 1
etc ...
我认为它只是将文件传递给 awk,因此它打印了第 n 行。我尝试使用 && 而不是 |,它只是打印了一个完整的文件列表,然后以无组织的方式打印了一个完整的数字列表。显然我不知道如何做到这一点。
使用 GNU awk
gawk -v OFS=", " 'FNR == 5 {print "FILENAME: " FILENAME, $1, $2; nextfile}' *.gjf
是的,FILENAME
是包含正在处理的当前文件名的 awk 变量。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句