Dlaczego xargs usuwa cudzysłowy z tekstu wejściowego?
Oto uproszczony przykład:
echo "/Place/='http://www.google.com'" | xargs echo
wyjścia
/Place/=http://www.google.com
Czy jest jakiś sposób na obejście tego? (xargs -0 mi nie pomaga)
linux
text-processing
xargs
ddario
źródło
źródło
xargs
traktuje cytaty i odwrotne ukośniki specjalnie jako część specyfikacji .xargs
Zamiast tego opublikuj to, co próbujesz zrobić .xargs -0
działa tutaj dla mnie ... Dlaczego to nie pomaga?Odpowiedzi:
Z
xargs
instrukcji:Oznacza to, że możesz uciec od cytatów, jeśli cytaty są cytowane same:
będzie działać, ale
echo /Place/=\'http://www.google.com\' | xargs echo
nie będzie.źródło
"/Place/='http://www.google.com'"
, w jaki sposób mogę go właściwie uciec?jeśli chcesz
xargs
, aby zignorować cytuje jeden z dobrych soultion może być użyciexargs
flagi xargs -0Sprawdziłem w systemie GNU, że ustawienie ogranicznika na określoną wartość (jak nowy wiersz) z
-d
opcją (i nie tylko-0
) spowoduje, żexargs
nie będzie traktować cudzysłowów itp. Specjalnie:źródło
Zamiast tego możesz użyć GNU Parallel:
W takim razie nie musisz sam cytować.
Dowiedz się więcej: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
źródło
Znalazłem inne rozwiązanie na stronie podręcznika: jawnie określ separator jako „\ n”. Wyłącza to specjalną obsługę cytatów:
Więc,
wyjścia
źródło
xargs
lub kompatybilnyksh93
$'...'
operatora cytowania, którego nie ma w każdej implementacji powłoki.Znalazłem tutaj inne rozwiązanie /programming//a/17468560/1795821, które sugeruje użycie
sed
do ucieczki cytatów.Na przykład:
źródło