LINUX.ORG.RU

sed: как вывести информацию между двумя словами

 ,


0

1

Здравствуйте. Разбираюсь с sed, споткнулся об синтаксис. Парсю в файл get запросом с сайта, мне вываливается информация, надо из неё выбрать определенное значение между двумя словами. Пытаюсь делать через sed.

 info=$(sed 's/слово1"\(.*\)слово2/\//' file.txt) 

Но строка длинная, и слова находятся не по краям, поэтому мне выдается всё кроме этих двух слов. Как получить изолировано только то что между этими словами? Например, вот текст например

 {"id":3876,"form":"index","time":21,"data":"2529423","service":"Atere","response":"WAIT"} 

Как из него вычленить только то что между «data» и «service». Man читаю, но не выходит.

Если это именно JSON, проще jq использовать:

root@debian:~# echo '{"id":3876,"form":"index","time":21,"data":"2529423","service":"Atere","response":"WAIT"}' | jq '.data'
"2529423"

alestro
()
> echo '{"id":3876,"form":"index","time":21,"data":"2529423","service":"Atere","response":"WAIT"}' | sed 's/^.*"data"://;s/,"service".*$//'
"2529423"
>
saahriktu ★★★★★
()
Ответ на: комментарий от alestro

Спасибо за ответ, но я эти данные в tcl использую, там точно знаю что sed работает, поэтому по нему и спрашиваю.

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

Да, sed в этом случае универсальнее.

grem ★★★★★
()

echo «1 2 3» | grep -Po "(?<=(1 )).*(?= 3)"

Deleted
()
Ответ на: комментарий от Lefeofan

Вообще-то больше сюда: https://wiki.tcl-lang.org/40053 ну и за одно: https://wiki.tcl-lang.org/13419

PS: парзить нерегулярные форматы (html, json, css ... и т.д.) регулярными выражениями (regexp, sed) — моветон.

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

я только разбираюсь в tcl, нашел для себя понятное решение сделать http запрос, получить в файл информацию и уже из файла ее обработать и отдать обратно tcl. Но как понимаю - это костыли и можно напрямую сделать http запрос и получить уже нужную информацию в переменную в tcl?

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

Это в любом языке так, используй его возможности и библиотеки. Путь через внешний файл и внешние обработчики — это мягко говоря, суб-оптимально.

beastie ★★★★★
()

htm-html; ∆  ~else.

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