我有两个文件,每个文件有两列
File1 列数低于:
ECDLT 5
DBG0 0
AHDST 53
RSNDL 10
DBLOG 2
ATDLM 1
ATREJ 1
DLMKT 0
AKDRP -100
ALTCM 100000000
BCPTM -1000000000
PERFS 1
OMSTD 1
LDTHD 1
DGCAN 1
HRLOG 1
AKALT 0
Run Code Online (Sandbox Code Playgroud)
File2 列数低于:
ECDLT 5
DBG0 0
MFLOR 1
LIPEM 1
GXTHR 5
LIPEM 1
LIPEM 1
RPTAT -1
RPTPA -1
PTIMR 1
NOQUE 1
AHDST 53
RSNDL 10
DBLOG 2
Run Code Online (Sandbox Code Playgroud)
所以,在这里我需要一个shell脚本来查找使用第一列的两个文件的差异,在输出中它应该打印两列.
我是shell脚本的新手.请帮帮我.我的需求非常糟糕.
(编辑使其更加简洁.将方向从脚本移动到命令行,以便您可以更好地控制输出的位置)
根据您只想从file1打印前两列的描述,以及仅第一列值与第二个文件中的相应行不同的行(假设第一个文件的行数多于第二个文件):
#!/bin/bash
paste $1 $2 | awk '{if ($1 != $3) {print $1 " " $2}}'
Run Code Online (Sandbox Code Playgroud)
这就是它如何使用脚本(将其命名为diff_col.sh):
$ chmod +x diff_col.sh
$ ./diff_col.sh input_file1 input_file2 > output_file
Run Code Online (Sandbox Code Playgroud)
与你的样本输入,只是
$ ./diff_col.sh input_file1 input_file2
Run Code Online (Sandbox Code Playgroud)
我明白了:
AHDST 53
RSNDL 10
DBLOG 2
ATDLM 1
ATREJ 1
DLMKT 0
AKDRP -100
ALTCM 100000000
BCPTM -1000000000
PERFS 1
OMSTD 1
LDTHD 1
DGCAN 1
HRLOG 1
AKALT 0
Run Code Online (Sandbox Code Playgroud)