使用awk分隔具有特殊值的行

时间:2014-07-30 13:59:56

标签: bash awk

我有两个文本文件。

我的第一个文本文件如下所示:

2 3
5 9

第二个文本文件如下所示:

4 2 3
3 6 2
1 5 9

我正在尝试分隔第二个文件中第2列和第3列的值与第一个文本文件的第1列和第2列中的值相同的行。

我正在尝试这个脚本,但我目前没有成功,输出为空。

set a=`awk '{print $1}' 1.txt` 
set b=`awk '{print $2}' 2.txt`
set cc=1
foreach ii ($a)
awk '($2==$a[$cc] && $3==$b[$cc]) {print$0}' 2.txt >> output.txt
@ cc++
end

有人可以帮我吗?

2 个答案:

答案 0 :(得分:1)

awk '{ sub(/\r/, ""); } NR == FNR { a[$1 FS $2]++; next } $2 FS $3 in a' file1 file2

输出:

4 2 3
1 5 9

答案 1 :(得分:-1)

您可以使用grep -f

grep -f 1.txt 2.txt
4 2 3
1 5 9

修改:如果您只想在$2中匹配$32.txt,请使用此awk命令:

awk 'FNR==NR {a[$1]=$2;next} a[$2]==$3' 1.txt 2.txt
4 2 3
1 5 9