LINUX.ORG.RU

xargs: разбиение строки и подстановка аргументов

 


0

1
# echo one two three | xargs -n1 echo
one
two
three

# echo one two three | xargs -n1 -i{} echo {}
one two three

Почему во втором случае не срабатывает -n1? Я был уверен, что это эквивалентные команды.

ps Похоже, какой-то баг гнутой версии - на маке echo one two three | /usr/bin/xargs -n1 -I{} echo {} работает правильно.

Deleted

Последнее исправление: Deleted (всего исправлений: 1)

Ответ на: комментарий от no-such-file

Но это же и есть явный баг. Хоть одна причина такого поведения кроме «нам лень чинить, поэтому назовем фичей» есть?

Deleted
()
Ответ на: комментарий от Deleted

Хоть одна причина такого поведения

Я этим никогда не пользовался, но подозреваю, что это удобнее т.к. cat file| xargs -i ... будет работать как sed, т.е. построчно.

Тебе же никто не мешает указать разделитель явно, через -d.

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)

А чего ты добиться-то хочешь? Чтобы первое слово вывела?

echo «one two three» | cut -d' ' -f1

slamd64 ★★★★★
()
Ответ на: комментарий от slamd64

Нет, мне дополнить его надо. Но в основном выражаю недоумение, зачем gnu версия так драматически сломала поведение.

Deleted
()
18 мая 2020 г.

Как сконструировать нужную команду с помощью xargs. Понимание xargs

Всем, кто пришёл из поиска - советую для осмысления прочитать

Как сконструировать нужную команду с помощью xargs. Понимание xargs

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.