根据另一个文件提取特定行

时间:2015-11-08 05:02:54

标签: awk sed

我有一个包含文本文件的文件夹。我需要根据另一个文件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

1 个答案:

答案 0 :(得分:0)

第3行, let x=1; z=x+y in z + 1 需要更改为$3

由于星号$2中的字段分隔符,因此在它之前的(空的,不存在的)字符串被计为$ 1,而在它之后的文件名为$ 2。< / p>

input.txt