0
我有一个包含文本文件的文件夹。我需要根据另一个文件input.txt从该文件夹的文件中提取特定行。我试了下面的代码。但它不起作用。基于另一个文件提取特定行
awk '
NR==FNR{
if(NF>1)f=$3
else A[f,$1]
next
}
(FILENAME,$3) in A {
print > (todir "/" FILENAME)
}
' todir=/home/alan/Desktop/output FS=\* /home/alan/Desktop/input.txt FS=" " *
file1
PHE .0 10 .0 0
ASP 59.8 11 59.8 0
LEU 66.8 15 66.8 0
ARG 21.0 16 21.0 0
file2
SER 57.9 43 57.9 0
PHE 2.4 44 2.4 0
GLN 86.1 49 83.2 2.9
THR 33.2 50 33.2 0
SER 10.2 51 .9 9.3
input.txt
*file1
10
16
*file2
43
44
49
Desired output
file1
PHE 0 10 0 0
ARG 21.0 16 21.0 0
file2
SER 57.9 43 57.9 0
PHE 2.4 44 2.4 0
GLN 86.1 49 83.2 2.9
在命令行上设置FS两次是可疑的。它可能适用于GNU'awk',尽管我不确信;它不会与大多数其他变体。 –
它将适用于所有的awks。将FS设置为文件之间的不同值是在arg列表中设置变量的极少数有效理由之一。 –