J'ai une sortie de commande dont je veux supprimer les doubles guillemets "
.
Regex:
strings -a libAddressDoctor5.so |\
grep EngineVersion |
awk '{if(NR==2)print}' |
awk '{print$2}'
Sortie:
EngineVersion="5.2.5.624"
Je voudrais savoir comment supprimer les caractères indésirables avec awk
ou sed
.
Utilisez la substitution de sed: sed 's/"//g'
s/X/Y/
remplace X par Y.
g
signifie que toutes les occurrences doivent être remplacées, pas seulement la première.
En utilisant simplement awk, vous pouvez le faire (j'ai également raccourci certains de vos tuyaux):
strings -a libAddressDoctor5.so | awk '/EngineVersion/ { if(NR==2) { gsub("\"",""); print $2 } }'
Je ne peux pas le vérifier pour vous parce que je ne connais pas votre entrée exacte, mais les travaux suivants fonctionnent:
echo "Blah EngineVersion=\"123\"" | awk '/EngineVersion/ { gsub("\"",""); print $2 }'
Voir aussi cette question sur la suppression des guillemets simples.
tr
peut être plus concis pour supprimer des caractères que sed
ou awk
, en particulier lorsque vous souhaitez supprimer différents caractères d'une chaîne.
Suppression des guillemets doubles:
echo '"Hi"' | tr -d \"
# Produces Hi without quotes
Suppression de différents types de supports:
echo '[{Hi}]' | tr -d {}[]
# Produces Hi without brackets
-d
signifie "supprimer".