Pourquoi xargs supprime-t-il les citations du texte saisi?
Voici un exemple simplifié:
echo "/Place/='http://www.google.com'" | xargs echo
les sorties
/Place/=http://www.google.com
Y a-t-il un moyen de contourner cela? (xargs -0 ne m'aide pas)
linux
text-processing
xargs
ddario
la source
la source
xargs
traite les guillemets et les contre-obliques spécialement dans le cadre de la spécification . Affichezxargs
plutôt ce que vous essayez de faire .xargs -0
travaille pour moi ici ... Pourquoi ça ne vous aide pas?Réponses:
Du
xargs
manuel:Cela signifie que vous pouvez échapper les guillemets si les guillemets sont eux-mêmes cités:
fonctionnera mais
echo /Place/=\'http://www.google.com\' | xargs echo
ne fonctionnera pas.la source
"/Place/='http://www.google.com'"
, comment puis-je l'échapper correctement?si vous voulez
xargs
de ne pas tenir compte des citations un des bons soultion peut être l'utilisation duxargs
drapeau xargs -0J'ai vérifié sur un système GNU que la définition du délimiteur à une valeur spécifique (comme une nouvelle ligne) avec
-d
option (et pas seulement-0
) empêcherait égalementxargs
de traiter les guillemets, etc. spécialement:la source
Vous pouvez utiliser GNU Parallel à la place:
Ensuite, vous n'avez pas à faire la citation vous-même.
En savoir plus: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
la source
J'ai trouvé une autre solution dans la page de manuel: spécifiez explicitement que le délimiteur est '\ n'. Cela désactive la gestion spéciale des devis:
Alors,
les sorties
la source
xargs
ou compatibleksh93
$'...'
opérateur de citation qui ne se trouve pas dans chaque implémentation du shell.J'ai trouvé une autre solution ici /programming//a/17468560/1795821 qui suggère d'utiliser
sed
pour échapper aux citations.Par exemple:
la source