将两列与两列进行比较

cha*_*les 4 scripting text-processing

我有一个文件,我需要将两列中的值与另外两列中的值进行比较。举些例子:

Item  A     B     C    D
1    201  3101   3101 201
2   3101   201    202 3101  
3   3101   201    201 3102 
4   3101   201   3202 202 
Run Code Online (Sandbox Code Playgroud)

因此,我试图做的是比较列Çd,但在列值Çd是可以互换的。如果两个值相同,我希望有一个像2这样的输出,如果只有一个匹配,则为1,如果两者都不匹配,则为0。答案是这样的

Item  A     B     C      D   Output
1    201  3101   3101   201    2
2   3101   201    202  3101    1
3   3101   201    201  3102    1
4   3101   201   3202   202    0
Run Code Online (Sandbox Code Playgroud)

我将如何能够实现这一目标?

Ber*_*ard 5

这个awk在线工具让您非常接近所需的输出(至少数字是正确的)。

awk '{n=0} $2==$4 {n=n+1} $2==$5 {n=n+1} $3==$4 {n=n+1} $3==$5 {n=n+1} {print $0, n}' inputfile
Run Code Online (Sandbox Code Playgroud)

awk这里使用的是基本的。引号之间的字符串对每一行都执行,而括号之间的块只有在前面的语句为真时才执行。$i指的是第 i 列。

  • 如果 A,B,C,D 相同,输出将是 4。我认为最好将 `$2==$4 {n=n+1} $2==$5 {n=n+1}` 合并到 `$2= =$4 || $2==$5 {n++}`,并将 `$3==$4 {n=n+1} $3==$5 {n=n+1}` 合并为 `$3==$4 || $3==$5 {n++}` (2认同)