J'ai des lignes avec un seul :
et un'
en eux que je veux supprimer Je veux utiliser awk
pour cela. J'ai essayé d'utiliser:
awk '{gsub ( "[:\\']","" ) ; print $0 }'
et
awk '{gsub ( "[:\']","" ) ; print $0 }'
et
awk '{gsub ( "[:']","" ) ; print $0 }'
aucun d'entre eux n'a fonctionné, mais renvoie l'erreur Unmatched ".
. quand je mets
awk '{gsub ( "[:_]","" ) ; print $0 }'
then Cela fonctionne et supprime tous les caractères :
et _
. Comment puis-je me débarrasser du caractère '
?
Vous pouvez utiliser:
Code octal pour la citation simple:
[:\47]
Les guillemets simples entre guillemets doubles, mais dans ce cas, les caractères spéciaux Seront développés par le shell:
% print a\': | awk "sub(/[:']/, x)"
a
Utilisez une expression rationnelle dynamique, mais il y a des implications pour la performanceà cette approche:
% print a\': | awk -vrx="[:\\\']" 'sub(rx, x)'
a
tr
est faite à cet effet
echo test\'\'\'\':::string | tr -d \':
teststring
$ echo test\'\'\'\':::string | awk '{gsub(/[:\47]*/,"");print $0}'
teststring
Cela marche:
awk '{gsub( "[:'\'']","" ); print}'
Avec bash, vous ne pouvez pas insérer une seule citation dans un littéral entouré de guillemets simples. Utilisez '"'"'
par exemple.
Tout d'abord, '
ferme le littéral actuel, puis "'"
le concatène avec un littéral ne contenant qu'un seul guillemet, et '
rouvre un littéral de chaîne, qui sera également concaténé.
Ce que tu veux c'est:
awk '{gsub ( "[:'"'"']","" ) ; print $0; }'
l'alternative de ssapkota est également bonne ('\''
).
Je ne sais pas pourquoi vous vous limitez à utiliser awk, de toute façon vous avez beaucoup de réponses d'autres utilisateurs Vous pouvez également utiliser sed pour vous débarrasser de ": '"
sed 's/:\'//g'
Cela servira aussi votre but. Simple et moins complexe.
Cela fonctionne aussi:
awk '{gsub("\x27",""); print}'