Передача переменной, которая может содержать подстановочный знак в качестве аргумента - PullRequest
0 голосов
/ 23 октября 2018

Я делаю сравнение между двумя переменными, 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

Почему моя переменная1аргумент не захватывает подстановочный знак в конце строки?

1 Ответ

0 голосов
/ 24 октября 2018

позволяя вашим переменным находиться в их собственных файлах

$ cat var1.txt 
aaa*
bbb
ccc*
ddd

$ cat var2.txt 
aaa*
bbb

вы можете использовать команду comm (common) для выделения того, что два файла имеют или не имеют общего.

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

Флаг -23 говорит не печатать второй или третий выходные столбцы, где первый столбец

  • - строки, уникальные для первого файла.
  • второй столбец - строки, уникальные длявторой файл
  • третий столбец - строки, общие для обоих файлов

Оба файла должны быть отсортированы, иначе comm будет жаловаться.

...