Linux 比较两个不同文件的内容
例如,`file1.txt仅包含变量: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
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