例如我有2个文本文件:
file1 包括:
a
b
bb
cc
file2 包括:
aa
bc
ab
输出应该是:
$p1.sh file1 file2
bb
cc
$p1.sh file2 file1
aa
bc
ab
我该如何编写这个 Bash 脚本?我写了类似这样的脚本,但是不起作用:
#!/bin/bash
cat "$1" | while read m
do
grep -f -v "$m" "$2"
done | sort -u
任何形式的指导都将不胜感激!我是一名初级程序员,没有编写脚本的经验。谢谢!
答案1
我认为您需要使用 sort 和 comm 命令来完成这项工作。例如:
comm -23 <(sort -u file1.txt) <(sort -u file2.txt) > file3.txt
我将让您自行使用抑制标志 (-1、-2、-3) 来获得所需的结果。我以 -23 为例。
另一个可能更简单的方法是使用 awk,如下所示:
awk 'FNR==NR{lines[$0]=1;next} !($0 in lines)' file1 file2