Une façon de le faire est d'inverser l'idée de savoir quelle est l'entrée et d'utiliser a.txt
comme les modèles à rechercher et ce que vous appelez "entrée" (je vais appeler "fichier2") comme ce qui est recherché. sur :
grep -o -f a.txt file2
ou
echo "/abc/dog" | grep -o -f a.txt
Ceux-ci ne donneront rien pour "/dog", bien que l'option echo
aura un code de retour non nul.
Edita:
Cela correspondra davantage au résultat que vous souhaitez obtenir :
while read -r line
do
match=$(echo "$line" | grep -of a.txt)
match=${match:-(NONE)}
printf "%-12s => %s\n" "$line" "$match"
done < file2
Vous pouvez forcer les modèles de recherche à commencer au début de la ligne comme ceci :
grep -o -f <(sed 's/^/^/' a.txt) file2