gpt4 book ai didi

linux - 显示未排序的 file1 中不存在于 file2 中的行

转载 作者:太空宇宙 更新时间:2023-11-04 04:57:01 25 4
gpt4 key购买 nike

我有 2 个文本文件,file1file2。我需要输出 file1file2 中不存在的那些行。

两个文件中的行顺序不同,并且 file2 中还有一些无关的行。

例如:

$ grep testme file1
chmod -f 644 /root/testme
chown -h root:root /root/testme

$ grep testme file2
chmod -f 777 /root/testme
chown -h dude:dude /root/testme

以上grepfile1 中两行不同的示例,或者在 file2 中不存在这样的两行。两个文件大小约为 5 MB。

在 Linux Bash (RHEL 7) 中使用以下过程

while read -r line; do
[ "$(\grep "^$line\$" file2 )" ] || echo $line
done < file1

显示...

chmod -f 644 /root/testme
chown -h root:root /root/testme
grep: Unmatched [ or [^`

...并且不会完成。这也需要很长的时间。

我尝试了另一种方法,它非常快,但只打印 2 行中的 1 行:

$ fgrep -v -f file2 file1
chmod -f 644 /root/testme
$

为什么只显示1行?

这两行位于文件中间的某个位置,以 CR 结尾。

请问有什么想法吗?谢谢!

最佳答案

非常感谢您使用 comm 的帮助和建议,但同时我使用 grep 找到了答案。我更喜欢 grep,因为它比 comm 快得多,而且不需要对输入进行排序。

$ fgrep -v -x -f file2 file1
chmod -f 644 /root/testme
chown -h root:root /root/testme

解决方案很简单,添加-x:

-x Select only those matches that exactly match the whole line

关于linux - 显示未排序的 file1 中不存在于 file2 中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43448310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com