比较两个文件中的名称和数字并输出更多



例如:

$ cat file1.txt
e 16
a 9
c 14
b 9
f 25
g 7
$ cat file2.txt
a 10 
b 12
c 15
e 8
g 7

Сomparing这两个文件使用命令(目录dir 1包含文件1,目录2中分别包含文件2)grep -xvFf "$dir2" "$dir1" | tee "$dir3",我们在目录dir 3中得到以下输出:

$ cat file3.txt
e 16
a 9
c 14
b 9
f 25

现在我需要比较文件3和文件2的输出,并且只输出到文件3的结果中,字母旁边的数字变得更大,如果数字等于或小于文件2中的值,不要将这些值输出到第三个文件,即文件3的内容应该是这样的:

$ cat file3.txt
e 16
f 25
{m,g}awk 'FNR < NR ? __[$!_]<+$NF : (__[$!_]=+$NF)<_' f2.txt f1.txt
e 16
f 25

如果你真的想一气吞声:

mawk '(__[$!!(_=NF)]+= $_ * (NR==FNR)) < +$_' f2.txt f1.txt

一个awk想法:

awk '
FNR==NR { a[$1]=$2; next }      # 1st file: save line in array a[]
($1 in a) && ($2 > a[$1])      # 2nd file: print current line if 1st field is an index in array a[] *AND* 2nd field is greater than the corrsponding value from array a[]
!($1 in a)                      # 2nd file: print current line if 1st field is not an index in array a[]
' file2.txt file1.txt

由此产生:

e 16
f 25

相关内容

  • 没有找到相关文章

最新更新