[英]comparing two files based on column if $3 of file1 is <0 in awk
根據文件1的第2列比較兩個文件。 如果file1的$ 3 <0,file2的$ 3為'n',則打印行file2,否則,如果file1的$ 3為> 0,而file2的$ 3為'p',則打印行file2,否則為null。
文件1
1; a; -16;
2; b; -3;
3; c; -4;
4; d; 5;
文件2
1; a; n;
2; b; n;
3; c; p;
4; d; p;
5; e; p;
輸出如下:
1; a; n;
2; b; n;
4; d; p;
使用awk
:
awk -F'; *' 'NR==FNR{a[$2]=$3;next}$3=="n" && a[$2]<0 || $3=="p" && a[$2]>0' file1 file2
1; a; n;
2; b; n;
4; d; p;
將文件一的第三列存儲在數組的第二列。 對於第二個文件,只需測試您的條件即可。 如果任何一個為true,則默認情況下awk
將為您打印該行。
使用這個簡單的腳本並獲得您的結果。
#!/bin/bash
while
read -r lineA <&3
read -r lineB <&4
do
val1=`echo "$lineA" | cut -d";" -f3`
val2=`echo "$lineB" | cut -d";" -f3`
if [ -n "$val1" ] && [ -n "$val2" ] ; then
if [ $val1 -lt 0 ] && [ $val2 == "n" ] ; then
echo "$lineB"
elif [ $val1 -gt 0 ] && [ $val2 == "p" ] ;then
echo "$lineB" ;
fi
fi
done 3<a.txt 4<b.txt
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.