Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如果file1的$3为<;则根据列比较两个文件;0英寸awk_Bash_Shell_Awk_Sed - Fatal编程技术网

Bash 如果file1的$3为<;则根据列比较两个文件;0英寸awk

Bash 如果file1的$3为<;则根据列比较两个文件;0英寸awk,bash,shell,awk,sed,Bash,Shell,Awk,Sed,根据文件1的第2列比较两个文件。如果file1的$3为0,file2的$3为“p”,则打印file2行,否则为空打印 文件1 文件2 输出如下所示: 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

根据文件1的第2列比较两个文件。如果file1的$3为0,file2的$3为“p”,则打印file2行,否则为空打印

文件1

文件2

输出如下所示:

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;
awk-F';*''NR==FNR{a[$2]=$3;next}$3==“n”&&a[$2]0'文件1文件2
1.A.N
2.BN
4.DP

将文件1的第3列存储在数组中第2列的索引中。对于第二个文件,只需测试您的条件。如果其中一个为真,默认情况下,
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
#/bin/bash
虽然

阅读-r lineA**感谢Kalanidhi M**
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;
    #!/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