Один из способов сделать это - несколько изменить представление о том, что является вводом, и использовать a.txt
в качестве шаблонов для поиска, и то, что вы называете "вводом" (я назову "file2"), чтобы быть тем, что ищется в:
grep -o -f a.txt file2
или же
echo "/abc/dog" | grep -o -f a.txt
Они ничего не выведут для "/dog", хотя версия echo
будет иметь ненулевой код возврата.
Редактировать:
Это будет более точно соответствовать вашему запросу:
while read -r line
do
match=$(echo "$line" | grep -of a.txt)
match=${match:-(NONE)}
printf "%-12s => %s\n" "$line" "$match"
done < file2
Вы можете принудительно запустить шаблоны поиска в начале строки следующим образом:
grep -o -f <(sed 's/^/^/' a.txt) file2