LINUX.ORG.RU

grep

 , ,


0

1

Нужно отфильтровать в сотнях конфигах, пользователей, подскажите как объяснить это grep, sed, awk и т.п.?

Искать нужно по шаблону users = [«tester», «i.ivanov», «s.petrov»] т.е. по факту мне нужна информация из [« »]

Куда там grep, sed и awk, ты нам сначала объясни , что за jq тебе надо.

t184256 ★★★★★
()

Ничего не понял, сформулируй вопрос нормально. Регексп для содержимого [] будет такой же, как и для остального, только скобки надо экранировать. То есть, \[(.*)\].

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

В дополнение выше отписавшимся, приведи пример данных, что и в каком виде из них нужно достать.

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

Давайте подробнее объясню, смотрите, есть сотни конфиг файлов, в этих файлах помимо основной бороды кода есть строки с доступами похожую на эту - users = [«tester», «i.ivanov», «s.petrov»]. В разных файлах могу быть и разные пользователи, например в файле config1 - users = [«db», «k.sidorov», «t.vasilev»] в файле config2 - users = [«l.michailova», «v.gureva», «a.milovanov»] Вот мне нужно найти в этих файлах фамилии людей.

Vitaliy_K
() автор топика
Ответ на: комментарий от Rossiks

Ну да. Если, конечно, конфиги в одном каталоге. Я решил, что уж до того, как нужные файлы «перечислить» ТС уж как-нибудь сам дошёл :)

CrX ★★★★★
()

ЧатЖПТ не хочет с тобой общаться?

papin-aziat ★★★★★
()
Ответ на: комментарий от Rossiks

Да зачем? Чтобы собрать, всё равно все пути писать, так что смысла никакого. Что

cp /path/to/config_directory_number_one/config* /path/to/another/config_dir/config* /path/to/yet_another_dir/config* ./
sed -En 's/.*users = .*\[(.*)\]/\1/;s/, /\n/g;s/"//gp' config* | sort -u

что

sed -En 's/.*users = .*\[(.*)\]/\1/;s/, /\n/g;s/"//gp' path/to/config_directory_number_one/config* /path/to/another/config_dir/config* /path/to/yet_another_dir/config* | sort -u

один фиг

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

Ну уже близко
Имена всех конфигов указывать, это слишком. Хотелось бы скормить ему единственную директорию, а он пусть сам файлы и подкаталоги открывает и ищет.

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

Ну если ещё и подкаталоги, то man find. Там всё просто, разберёшься. С собственно sed’ом, надеюсь, я правильно понял, что нужно?

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

Зачем усложнять c find, grep же из коробки умеет шерстить все файлы, включая в подкаталогах. Может можно только грепом обойтись, его функционала хватит?

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

Для этой задачи grep’а маловато будет, sed нужен (ну можно awk по вкусу). Не, можно. конечно grep’ом сначала найти все строки с users =, затем пайпом направить в sed для дальнейшей обработки, но по-моему это как раз усложнение по сравнению с find. Хотя тоже дело вкуса, конечно. По скорости там всё равно в I/O упрётся, так что разницы не будет.

CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 2)
Ответ на: комментарий от Vitaliy_K

Может это уже наглость? Вам дали несколько решений, вашей задачи. Хотите по другому решить её, читаем man.

CrX, прав всё упрётся в диск.

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