Warum werden in xargs Anführungszeichen aus dem Eingabetext entfernt?
Hier ist ein vereinfachtes Beispiel:
echo "/Place/='http://www.google.com'" | xargs echo
Ausgänge
/Place/=http://www.google.com
Gibt es eine Möglichkeit, dies zu umgehen? (xargs -0 hilft mir nicht)
linux
text-processing
xargs
ddario
quelle
quelle
xargs
behandelt Anführungszeichen und Backslashes speziell als Teil der Spezifikation . Veröffentlichen Siexargs
stattdessen, womit Sie zu tun versuchen .xargs -0
funktioniert bei mir hier ... Warum hilft es dir nicht?Antworten:
Aus dem
xargs
Handbuch:Dies bedeutet, dass Sie Anführungszeichen umgehen können, wenn die Anführungszeichen selbst in Anführungszeichen stehen:
wird funktionieren, aber
echo /Place/=\'http://www.google.com\' | xargs echo
nicht.quelle
"/Place/='http://www.google.com'"
Wie kann ich ein ausgegebenes Skript ordnungsgemäß umgehen?wenn Sie wollen ,
xargs
um Anführungszeichen ignorieren eine der guten soultion kann die Verwendung seinxargs
Flag xargs -0Ich habe auf einem GNU-System überprüft, dass das Setzen des Begrenzers auf einen bestimmten Wert (wie eine neue Zeile) mit der
-d
Option (und nicht nur-0
) auch dazu führen würde, dassxargs
die Anführungszeichen usw. nicht speziell behandelt werden:quelle
Sie könnten stattdessen GNU Parallel verwenden:
Dann müssen Sie nicht selbst zitieren.
Weitere Informationen: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
quelle
In der Manpage wurde eine andere Lösung gefunden: Geben Sie das Trennzeichen explizit als '\ n' an. Dies deaktiviert die spezielle Behandlung von Anführungszeichen:
So,
Ausgänge
quelle
xargs
oder kompatibel impliziertksh93
$'...'
Quoting-Operators vermieden wird, der nicht in jeder Shell-Implementierung zu finden ist.Ich fand eine andere Lösung hier /programming//a/17468560/1795821 , die schlägt mit
sed
Anführungszeichen zu entkommen.Beispielsweise:
quelle