我确信我曾经发现过一个shell命令,它可以从两个或多个文件中打印公共行。它叫什么名字?
它比diff简单多了。
我确信我曾经发现过一个shell命令,它可以从两个或多个文件中打印公共行。它叫什么名字?
它比diff简单多了。
当前回答
perl -ne 'print if ($seen{$_} .= @ARGV) =~ /10$/' file1 file2
其他回答
awk 'NR==FNR{a[$1]++;next} a[$1] ' file1 file2
如果这两个文件还没有排序,你可以使用:
comm -12 <(sort a.txt) <(sort b.txt)
它将工作,避免错误消息comm: file 2不是有序的 当执行comm -12 a.t xxb .txt时。
而
fgrep -v -f 1.txt 2.txt > 3.txt
给出了两个文件的区别(在2.txt和不在1.txt中的文件),你可以很容易地做一个
fgrep -f 1.txt 2.txt > 3.txt
收集所有公共行,这应该为您的问题提供一个简单的解决方案。如果你已经对文件进行了排序,你仍然应该使用通信。的问候!
注意:你可以用grep -F代替fgrep。
也许你指的是通讯?
逐行比较排序文件FILE1和FILE2。 在没有选项的情况下,生成三列输出。列一个 包含FILE1列特有的行 Two包含唯一的行 FILE2和第三列包含两个文件的公共行。
找到这些信息的秘密是信息页。对于GNU程序,它们比手册页要详细得多。尝试info coreutils,它会列出所有有用的小utils。
rm file3.txt
cat file1.out | while read line1
do
cat file2.out | while read line2
do
if [[ $line1 == $line2 ]]; then
echo $line1 >>file3.out
fi
done
done
这个应该可以了。