Linux 比较两个不同文件的内容

Linux 比较两个不同文件的内容,linux,bash,shell,Linux,Bash,Shell,例如,`file1.txt仅包含变量: a b d c file2.txt包含如果file2.txt中的行不是以开头的,如果file2.txt中的行不是以开头的,则当键不在路径中的任何位置时: 试试这个 根据需要切换文件名。密钥不在路径中任何位置时的解决方案: 试试这个 根据需要切换文件名。您要求使用shell,但我会通过python进行回答 import sys with open(sys.argv[1], "r") as f: d = dict((e.rstrip().split

例如,`file1.txt仅包含变量:

a
b
d
c

file2.txt
包含
如果file2.txt中的行不是以开头的,如果file2.txt中的行不是以开头的,则当键不在路径中的任何位置时:
试试这个


根据需要切换文件名。

密钥不在路径中任何位置时的解决方案: 试试这个


根据需要切换文件名。

您要求使用shell,但我会通过python进行回答

import sys

with open(sys.argv[1], "r") as f:
    d = dict((e.rstrip().split()[1], e) for e in f)

with open(sys.argv[2], "r") as f:
    for e in f:
        e = e.rstrip()
        if e in d:
            print(d[e], end="")
如果将其保存到
run.py
,则可以这样调用它

python3 run.py file2.txt file1.txt > output.txt

与排序解决方案相比,它还保留了
file1.txt
的顺序,但会将第二个文件加载到内存中。

您要求使用shell,但我会通过python进行回答

import sys

with open(sys.argv[1], "r") as f:
    d = dict((e.rstrip().split()[1], e) for e in f)

with open(sys.argv[2], "r") as f:
    for e in f:
        e = e.rstrip()
        if e in d:
            print(d[e], end="")
如果将其保存到
run.py
,则可以这样调用它

python3 run.py file2.txt file1.txt > output.txt

与排序解决方案相比,它还保留了
file1.txt
的顺序,但会将第二个文件加载到内存中。

AWK有以下优点:

$ awk 'NR == FNR {keys[$0] = 1; next}keys[$2]' file1.txt file2.txt
< a /x/y/1.c
< c /x/d/7.h
< b /x/v/8.mk
< d /x/5.so
$awk'NR==FNR{keys[$0]=1;next}keys[$2]'file1.txt file2.txt

基本上,file1.txt被缓冲在
数组中。然后,如果第2列在所述数组中,则会打印文件2中的每一行:

AWK对这些方面有好处:

$ awk 'NR == FNR {keys[$0] = 1; next}keys[$2]' file1.txt file2.txt
< a /x/y/1.c
< c /x/d/7.h
< b /x/v/8.mk
< d /x/5.so
$awk'NR==FNR{keys[$0]=1;next}keys[$2]'file1.txt file2.txt

基本上,file1.txt被缓冲在
数组中。然后,如果第2列在所述数组中,则会打印文件2中的每一行:

如果路径包含的键为true,则返回的值可能会超过预期值,我没有考虑到这一点。如果路径包含的键为true,则返回的值可能会超过预期值,我没有考虑到这一点。@BabaD我不明白你的意思?在我的一个例子中,我试图打印在file1.txt和file2.txt中不同的变量。我尝试使用comm、diff、Join,但对于大量文件,我没有得到有效的结果。
在我的一个例子中,我尝试打印file1.txt和file2.txt中不同的变量。
只需将
键[$2]
更改为
!键[$2]
@BabaD我不明白你的意思?在我的一个例子中,我试图打印file1.txt和file2.txt中不同的变量。我尝试使用comm、diff、Join,但对于大量文件,我没有得到有效的结果。
在我的一个例子中,我尝试打印file1.txt和file2.txt中不同的变量。
只需将
键[$2]
更改为
!按键[$2]
大家好,我们可以比较下面的变量text1.txt文件:a c d text2.txt文件:a b c d e我正在尝试比较file1.txt内容和file2.txt内容我使用了comm,diff,join命令它们没有给出所需的结果预期输出如下:b e file1.txt与file2.txt进行比较,如果找到匹配项,则不应打印匹配的内容。这意味着我只需要file1.txt和file2.txt中不同的变量。我们可以按如下text1.txt文件比较变量:a c d text2.txt文件:a b c d e我正在尝试比较file1.txt内容和file2.txt内容,我使用comm,diff,join命令它们没有提供所需的结果预期输出如下:b e file1.txt与file2.txt比较,如果找到匹配项,则不应打印匹配的内容。这意味着我只需要file1.txt和file2.txt中不同的变量
import sys

with open(sys.argv[1], "r") as f:
    d = dict((e.rstrip().split()[1], e) for e in f)

with open(sys.argv[2], "r") as f:
    for e in f:
        e = e.rstrip()
        if e in d:
            print(d[e], end="")
python3 run.py file2.txt file1.txt > output.txt
$ awk 'NR == FNR {keys[$0] = 1; next}keys[$2]' file1.txt file2.txt
< a /x/y/1.c
< c /x/d/7.h
< b /x/v/8.mk
< d /x/5.so