传递可能包含通配符作为参数的变量



我正在比较两个变量,变量1和变量2。如果两个变量之间存在重复项,我想删除变量中出现重复项的整行变量1.

例如:

variable1
-----
aaa* 
bbb
ccc*
ddd
variable2
-----
aaa* 
bbb

我的预期输出是:

variable1
-----
ccc*
ddd

我目前得到的输出:

variable1
------
aaa*
ccc*
ddd

这是我的脚本:

echo "$variable2" | sed "/"$variable1"/d" >> output.txt

为什么我的 variable1 参数没有捕获字符串末尾的通配符?

让你的变量在它们自己的文件中

$ cat var1.txt 
aaa*
bbb
ccc*
ddd
$ cat var2.txt 
aaa*
bbb

可以使用comm(COMMON( 命令来隔离两个文件的共同点或不共同点。

$ comm -23 var1.txt var2.txt 
ccc*
ddd

标志 -23 表示不打印第二或第三输出列 其中

  • 第一列是第一个文件特有的行
  • 第二列是第二个文件特有的行
  • 第三列是两个文件共有的行

两个文件都必须排序,否则comm会投诉。

最新更新