Как извлечь данные после поля в файле

У меня есть следующий текст в файле

"rules": [ "/Common/Tetration_TCP_L4_ipfix", "/Common/_sys_https_redirect" ], "rulesReference": [ { "link": "https://localhost/mgmt/tm/ltm/rule/~Common~Tetration_TCP_L4_ipfix?ver=12.0.0" } 

хочу извлечь что-нибудь внутри "rules": [] настоящее время это

 /Common/Tetration_TCP_L4_ipfix /Common/_sys_https_redirect 

Вывод должен выглядеть так

 Tetration_TCP_L4_ipfix _sys_https_redirect 

но опять же это может быть что угодно.

Если ваш входной файл содержит не полноценный JSON, а только внутренний fragment (хотя и структурно допустимый), вы можете восстановить недостающие «внешние» части, чтобы получить полную действительную структуру JSON.

Решение sed + jq :

 jq -r '.rules[] | sub("/Common/"; "")' <(sed '1 s/^/{/; $ s/$/]}/' file) 

Выход:

 Tetration_TCP_L4_ipfix _sys_https_redirect 

Конечно, если в действительности у вас есть действительный JSON - просто пропустите обработку sed и просто используйте:

 jq -r '.rules[] | sub("/Common/"; "")' file 

Если это правильно сформированный файл JSON:

 $ jq -r '..|select(type=="object" and has("rules")).rules|map(split("/")|.[-1])|.[]' file.json Tetration_TCP_L4_ipfix _sys_https_redirect 

Это будет использовать jq для рекурсивного поиска всех объектов JSON, у которых есть ключ rules . Для всех значений массива этих ключей он разделит значение на / и вернет последний его компонент.

Использование AWK:

 awk -F '[/"]' '/"rules": /,/],/{if(/"rules": |],/) next; print $(NF-1)}' file.txt