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

时间:2018-10-23 18:25:56

标签: shell awk sed while-loop grep

我正在比较两个变量Variable1和Variable2。如果两个变量之间存在重复,则我要删除变量中的整行,其中重复出现在变量1中。

例如:

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

variable2
-----
aaa* 
bbb

我的预期输出是:

variable1
-----
ccc*
ddd

我当前得到的输出:

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

这是我的脚本:

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

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

1 个答案:

答案 0 :(得分:0)

将变量保存在自己的文件中

$ cat var1.txt 
aaa*
bbb
ccc*
ddd

$ cat var2.txt 
aaa*
bbb

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

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

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

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

两个文件都必须排序,否则comm会报错。