Найти слово с помощью grep, sed, awk

Есть рандомный текст, в нем встречаются

"user":"Blabla_123" ...... "user":"123_Blabla"....

Как нам получить

Blabla_123

123_Blabla

Есть код, он не работает

grep "user" путь к фаилу | awk -F ':"' '{print $2}'

Буду рад любым ответам, спасибо!


Ответы (1 шт):

Автор решения: Ainar-G

Я предполагаю, что в файле одна строка? В таком случае, вот вариант с GNU grep и POSIX sed:

$ grep -e '"user":"[^"]\+"' -o ./file.txt |\
    sed -e 's/.*"user":"\([^"]\+\)".*/\1/g'

Вариант только через POSIX чуть посложней:

$ sed -e 's/"user":"[^"]\+"/\0\n/' ./file.txt |\
    sed -e 's/.*"user":"\([^"]\+\)".*/\1/g'

Вариант с POSIX cut в конце от @0andriy:

$ sed -e 's/"user":"[^"]\+"/\0\n/' ./file.txt | cut -d '"' -f 4
→ Ссылка