Intereting Posts
Как получить все строки между первым и последним вхождениями шаблонов? sudo: извините, вам не разрешено устанавливать следующие переменные среды Обновление скручивания в Centos 5.6 Как разрешить только машины с указанным ip для входа через ssh? Редактирование вывода команды как новой команды Какие цветовые коды я могу использовать в своем приглашении PS1? как определить, является ли раздел пустым / неиспользуемым Пользовательские привязки клавиш для режима оболочки vi, т. Е. «Set -o vi»? Сообщение об ошибке Bash на mac с помощью Perl Почему гостевой сервер linux потребляет 100% центрального процессора под VirtualBox, когда гость простаивает? gtk-2.0 тема: можно ли изменить неактивный слайдер? Системные вызовы, AWK и ввод внешних входов Как сделать локальные сертификаты CA системы известными для Firefox? Невозможно добавить статический маршрут в мой Ubuntu, SIOCADDRT: сеть недоступна Ошибка разрешения доступа к установленному каталогу в локальном хосте

Сделать xargs в качестве первого параметра

Я пытаюсь создать такое поведение:

grep 192.168.1 *.txt 

Передавая строку в grep через Xargs, но она идет на конец, а не как первый параметр.

 echo 192.168.1 | xargs grep *.txt 

Мне нужно сказать xargs (или что-то подобное), чтобы поместить входящую строку между «grep» и «*», а не в конец.

Как мне это сделать?

 $ echo 192.168.1. | xargs -I{} grep {} *.txt 

пример

Примеры файлов:

 $ cat {1..3}.txt 192.168.1 192.168.1 192.168.1 

Пример выполнения:

 $ echo 192.168.1. | xargs -I{} grep {} *.txt 1.txt:192.168.1. 2.txt:192.168.1. 3.txt:192.168.1. 

Другой подход:

 find . -name \*.txt -print0 | xargs -0 grep 192.168.1 

Это не переполнит длину командной строки оболочки слишком большим количеством имен файлов. Чтобы избежать путаницы xargs / grep с именами файлов с пробелами, параметры -print0 и -0 будут определять каждое найденное имя с нулевым, а не LF.