我试图找出两个变量之间的区别:
left='f012 f013'
和right='f012 f013 f014'
。
我需要找到左侧不存在的所有f *。我也尝试了以下也没有工作:
echo 'f012 f013' | grep -o -v 'f012 f013 f014'
谁能告诉我我做错了什么?
答案 0 :(得分:0)
大多数* nix工具要求您每行有一个项目,comm
可能更合适:
$ cat haystack
f012
f013
$ cat needles
f012
f013
f014
$ comm -13 haystack needles
f014
从man comm
开始,-13
会抑制第1列中的行(FILE1唯一的行, ie。 haystack
,您的命令的输出)和第3列(出现在两个文件中的行),留下FILE2唯一的行, ie。 needles
,您正在寻找的f*
。
答案 1 :(得分:0)
您可以使用diff
来比较变量,但是您需要将它们分成不同的行,否则它只是比较整行,而不是每个字段:
diff <(awk -v RS=" |\n" '$1=$1' <<<"$left") <(awk -v RS=" |\n" '$1=$1' <<<"$right")
2a3
> f014