Почему xargs вырезает цитаты из ввода?

Почему xargs вырезает кавычки из входного текста?

Вот упрощенный пример:

echo "/Place/='http://www.google.com'" | xargs echo 

выходы

 /Place/=http://www.google.com 

Есть ли способ обойти это? (xargs -0 мне не помогает)

4 Solutions collect form web for “Почему xargs вырезает цитаты из ввода?”

Из руководства xargs :

Если вы хотите, чтобы входной аргумент содержал пробелы или горизонтальные вкладки, заключите его в двойные кавычки или апострофы. Если аргумент содержит символ двойной кавычки ( " ), вы должны заключить аргумент в апострофы. И наоборот, если аргумент содержит апостроф ( ' ), вы должны заключить аргумент в двойные кавычки. Вы также можете поместить обратную косую черту ( \ ), перед символом, чтобы передать xargs игнорировать любое особое значение, которое может иметь персонаж (например, символы пробела или кавычки).

Это означает, что вы можете избежать кавычек, если цитаты цитируются сами:

 $ echo "/Place/=\'http://www.google.com\'" | xargs echo /Place/='http://www.google.com' 

будет работать, но echo /Place/=\'http://www.google.com\' | xargs echo echo /Place/=\'http://www.google.com\' | xargs echo не будет.

Вместо этого вы можете использовать GNU Parallel:

 $ echo "/Place/='http://www.google.com'" | parallel echo /Place/='http://www.google.com' 

Тогда вам не нужно делать цитаты.

Подробнее: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

если вы хотите, чтобы xargs игнорировали кавычки, одним из хороших существ может быть использование xargs flag xargs -0

Непосредственно из Man page OPTIONS

ОПЦИИ -0, –null

Элементы ввода заканчиваются нулевым символом, а не пробелом, а кавычки и обратная косая черта не являются специальными (каждый символ берется буквально). Отключает конец строки файла, который обрабатывается как любой другой аргумент. Полезно, когда входные элементы могут содержать пробелы, кавычки или обратную косую черту. Опция GNU find -print0 создает вход, подходящий для этого режима.

Я проверил в системе GNU, что установка разделителя на определенное значение (например, xargs ) с опцией -d (а не только -0 ) также приведет к тому, что xargs не будут обрабатывать кавычки и т. Д.

 -bash-4.3$ { echo "a'b'c"; echo d; } | xargs -d$'\n' echo a'b'c d -bash-4.3$ rpm -qf "$(which xargs)" findutils-4.6.0.0.99.11a05-alt1.x86_64 -bash-4.3$ { echo "a'b'c"; echo d; } | xargs echo abc d -bash-4.3$ 

Я нашел другое решение здесь https://stackoverflow.com/a/17468560/1795821, в котором предлагается использовать sed для возврата котировок.

Например: sh-3.2$ echo "/Place/='http://www.google.com'" | sed "s/\'/\\\'/g" | xargs echo /Place/='http://www.google.com' sh-3.2$ echo "/Place/='http://www.google.com'" | sed "s/\'/\\\'/g" | xargs echo /Place/='http://www.google.com'

  • xargs и vi - «Вход не от терминала»
  • Печать состояния файлов, обрабатываемых при использовании find
  • Использование xargs с вводом из файла
  • find, xargs и mv: переименование файлов с двойными кавычками, расширение и проблема с приоритетом bash
  • ssh-add добавить все закрытые ключи в .ssh каталог
  • Как мне регистрировать xargs -0 rm?
  • xargs и линейный трубопровод
  • Отменить все переменные ENV, соответствующие _PROXY
  • правильное параллельное использование xargs
  • zsh "echo SomeText >> ** / filename" в других оболочках
  • `grep -l .. | xargs vim` генерирует предупреждение, почему?
  • Interesting Posts

    Как глобально настроить безопасные клиенты с помощью OpenSSL на Oracle Linux 5 / RHEL 5?

    Как узнать, как долго сокет находится в CLOSE_WAIT?

    Обновления системы в архиве linux с / boot в отдельном разделе?

    Почему команда curl использует URL-адреса с параметрами ввода

    org.eclipse.swt.SWTError: больше ручек во время работы spoon.sh в ubuntu

    Помогите прочитать плоский файл в unix и вывести на упрощенный формат csv для импорта в excel

    Использование переносного устройства Gentoo для установки программ в корневое расположение

    Преобразование значений в строке по первому полю

    cshrc выполняет bashrc внутри себя?

    Как запустить клиентский скрипт на удаленном хосте и получить результаты для клиента

    Как использовать локальный IP-адрес вместо внешнего

    Control-p задерживает сеанс SSH

    Использование nice на bash (или другом) подоболочке?

    Как я могу использовать Mint Live DVD с отдельным постоянным хранилищем настроек на USB-накопителе?

    Почему Linux использует интерфейс символьного устройства для / dev / mem?

    Linux и Unix - лучшая ОС в мире.