用循环

时间:2017-11-04 06:26:23

标签: loops awk

我有一个awk命令如下:

awk 'FNR==NR{a[$1$2]=$3;next} ($1$2 in a) {print$1,$2,a[$1$2],$3}' ""each line of file 1""  >./awkfile/12as_132l.txt

和f1.txt的内容是:

1sas.txt 12ds.txt 
13sa.txt 21sa.txt

我希望我的脚本读取fil1.txt的每一行并将内容放在这个awk命令中......而不是""" file1"&#34的每一行; ..并执行如下命令:

    awk 'FNR==NR{a[$1$2]=$3;next} ($1$2 in a) {print$1,$2,a[$1$2],$3}'  1sas.txt 12ds.txt  >./awkfile/12as_132l.txt



  awk 'FNR==NR{a[$1$2]=$3;next} ($1$2 in a) {print$1,$2,a[$1$2],$3}' 13sa.txt 21sa.txt  >./awkfile/12as_132l.txt

我需要一个循环,但问题是对我来说有点奇怪。

2 个答案:

答案 0 :(得分:1)

这是Snippet,它从f1.txt逐行读取2个字段,将其放入变量,并在awk中使用

#!/usr/bin/env bash

while read -r  col1file col2file; do

       # your command goes here
       # this awk does nothing, replace it with your command
       awk '{  }' "$col1file" "$col2file" > someoutfile 

done < "f1.txt"

测试结果:

akshay@db-3325:/tmp$ cat f1.txt 
1sas.txt 12ds.txt 
13sa.txt 21sa.txt

akshay@db-3325:/tmp$ cat test.sh 
while read -r  col1file col2file; do

       echo "col1 : $col1file"
       echo "col2 : $col2file"

       # your command goes here
       # this awk does nothing, replace it with your command
       # awk '{  }' "$col1file" "$col2file" > someoutfile 

done < "f1.txt"

akshay@db-3325:/tmp$ bash test.sh 
col1 : 1sas.txt
col2 : 12ds.txt
col1 : 13sa.txt
col2 : 21sa.txt

答案 1 :(得分:0)

change the IFS to IFS=' ' and use loop .