Найти слово с помощью 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