Утилита cat
просто объединяет переданные ей данные, так что здесь она не очень полезна.
Предполагая, что допустимо несколько небрежно относиться к тому, что представляет собой действующий IP-адрес:
grep -Ex '([0-9]{1,3}\.){3}[0-9]{1,3}' file
Это сопоставит и напечатает все строки, соответствующие заданному регулярному выражению (и отбросит остальные ).
Еще более небрежным решением было бы отбрасывать строки, содержащие что-либо, кроме точек и цифр:
grep -v '[^0-9.]' file
В зависимости от ваших требований, одного из них будет достаточно.
Для полностью правильного регулярного выражения (не соответствует недопустимым IP-адресам ), вы можете использовать
grep -Ex '((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])' file
Похоже, вы хотите, чтобы путь к файлу был первым аргументом вашей программы:
find testDir -type f -exec./logic {} essai \;
Это будет искать в каталоге testDir
(, а также в любом подкаталогеtestDir
)обычные файлы, и для каждого найденного файла будет вызывать вашу программу с путем к файлу в качестве первого аргумента (и с essai
в качестве второго аргумента ).
Разница между этим и вашим собственным приказом,
find. -type f -exec./logic testDir/ essai '{}' \;
в том, что
testdir/
, Это может сделать то, что вы ищете-
find testDir/ -type f | awk '{system("./logic "$1" -your_args_here")}'