Почему xargs удаляет кавычки из входного текста?
Вот упрощенный пример:
echo "/Place/='http://www.google.com'" | xargs echo
выходы
/Place/=http://www.google.com
Есть ли способ обойти это? (xargs -0 мне не помогает)
linux
text-processing
xargs
ddario
источник
источник
xargs
рассматривает кавычки и обратную косую черту специально как часть спецификации . Опубликуйте, что вы пытаетесь сделатьxargs
вместо этого.xargs -0
у меня здесь работает ... Почему это не поможет?Ответы:
Из
xargs
руководства:Это означает, что вы можете избежать кавычек, если сами кавычки заключены в кавычки:
будет работать, но
echo /Place/=\'http://www.google.com\' | xargs echo
не будет.источник
"/Place/='http://www.google.com'"
, как я могу правильно избежать его?если вы хотите ,
xargs
чтобы игнорировать цитирует одну из хорошей soultion может быть использованиеxargs
флага xargs -0Я проверил в системе GNU, что установка разделителя на определенное значение (например, на новую строку) с
-d
параметром (и не только-0
) также приведетxargs
к тому, что не будет обрабатываться кавычки и т. Д. Специально:источник
Вместо этого вы можете использовать GNU Parallel:
Тогда вам не нужно делать цитаты самостоятельно.
Подробнее: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
источник
Я нашел другое решение в man-странице: явно укажите разделитель как '\ n'. Это отключает специальную обработку для кавычек:
Так,
выходы
источник
xargs
или совместимостьksh93
$'...'
оператора цитирования, который встречается не в каждой реализации оболочки.Я нашел другое решение здесь /programming//a/17468560/1795821, которое предлагает использовать
sed
для кавычек.Например:
источник