grep string fixe à la fin de la ligne

J'ai besoin de grep pour string contenant des caractères spéciaux et assurez-vous qu'il est à la fin de la ligne

Par exemple, dans la list:

La string de search et la correspondance possible contenant des caractères spéciaux sont variables, ainsi un masquage fixe n'est pas possible.

Je cherche quelque chose comme grep -F en combinaison avec la fin de ligne $ anchor. -w ne suffira pas, il doit être fin de ligne.

Une approche consiste à échapper à ces caractères spéciaux avant d'appeler grep .

Avec zsh :

 ssortingng='123*.$[]' grep -e "${ssortingng//(#m)[[^.\\\$*]/\\$MATCH}\$" file 

ou POSIXly:

 escaped_ssortingng=$(printf '%s\n' "$ssortingng" | sed 's/[[^.\$*]/\\&/g') grep -e "$escaped_ssortingng\$" file 

ou en supposant que la $ssortingng ne contient pas \E , avec GNU grep ou pcregrep :

 grep -Pe "\Q$ssortingng\E\$" file 

ou vous pourriez utiliser awk comme:

 STRING="$ssortingng" awk 'BEGIN {s = ENVIRON["STRING"]; n = length(s)} length >= n && substr($0, length - n + 1, n) == s' 

ou perl :

 STRING="$ssortingng" perl -ne 'print if /\Q$ENV{"STRING"}\E$/' 

(cette fois, perl sait qu'un \E trouvé dans $ENV{"STRING"} ne marque pas la fin de la string \ Quoted).