Искать 2 строки в файле и вывести строки, содержащие обе строки

Итак, я хочу передать 2 строки и имя файла из командной строки и выполнить поиск обеих строк в файле. Пример ввода: script.sh file.txt AB 78
Пример вывода: 001, AB, cse, 78

(где в файле есть эта строка среди других, которые не совпадают)

Моя попытка:

`#/usr/bin/env bash`  
`grep '$2.*$3\|$3.*$2' $1`

Однако это не сработает. Кто-нибудь может помочь?

0
15.01.2017, 18:49
1 ответ

Вам нужно заменить одинарную кавычку на двойную, чтобы $2 и $3 были развернуты в строку поиска:

#/usr/bin/env bash
grep "$2.*$3\|$3.*$2" $1

Лучшее объяснение здесь:

https://stackoverflow.com/questions/6697753/difference-between-single-and-double-quotes-in-bash#6697781

1
28.01.2020, 02:46

Теги

Похожие вопросы