¿Por qué xargs elimina las comillas del texto de entrada?
Aquí hay un ejemplo simplificado:
echo "/Place/='http://www.google.com'" | xargs echo
salidas
/Place/=http://www.google.com
¿Hay alguna forma de solucionar esto? (Xargs -0 no me ayuda)
linux
text-processing
xargs
ddario
fuente
fuente
xargs
trata las comillas y las barras invertidas especialmente como parte de la especificación . Publica lo que estás intentando hacer en suxargs
lugar.xargs -0
funciona para mí aquí ... ¿Por qué no te ayuda?Respuestas:
Del
xargs
manual:Esto significa que puede escapar de las comillas si las comillas se citan a sí mismas:
funcionará pero
echo /Place/=\'http://www.google.com\' | xargs echo
no lo hará.fuente
"/Place/='http://www.google.com'"
, ¿cómo puedo escapar de él correctamente?si quieres
xargs
a ignorar las cotizaciones uno de los buenos soultion puede ser el uso dexargs
la bandera xargs -0He comprobado en un sistema GNU que establecer el delimitador en un valor específico (como una nueva línea) con la
-d
opción (y no solo-0
) también haría quexargs
no se trataran las comillas, etc. especialmente:fuente
En su lugar, podría usar GNU Parallel:
Entonces no tiene que hacer la cita usted mismo.
Más información: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
fuente
Encontré otra solución en la página de manual: especifique explícitamente que el delimitador sea '\ n'. Esto desactiva el manejo especial de las cotizaciones:
Asi que,
salidas
fuente
xargs
o compatibleksh93
$'...'
operador de citas que no se encuentra en todas las implementaciones de shell.Encontré otra solución aquí /programming//a/17468560/1795821 que sugiere usar
sed
para escapar de las comillas.Por ejemplo:
fuente