Извлечь подстроку командой sed

У меня есть один файл, который включает в себя эту строку:

2020-12-21 10:46:49.165 INFO: [41] browser.leaveCallAndQuitBrowser() [2020-12-21T10:46:36+0000] [FINE] DevTools WebSocket Event: Runtime.consoleAPICalled 74D7A734C0BD6EEFA60271821A6A2F55 {
   "args": [ {
      "type": "string",
      "value": "2020-12-21T10:46:36.633Z"
   }, {
      "type": "string",
      "value": "[modules/xmpp/xmpp.js]"
   }, {
      "type": "string",
      "value": "\u003CA.connectionHandler>: "
   }, {
      "type": "string",
      "value": "My Jabber ID: recorder@recorder.mydomain/hjE0dMPL"
   } ],
...

Я пытаюсь извлечь эту строку из файла recorder@recorder.mydomain.com/vT1gTnAz с помощью команды sed, но мне это не удалось. Может ли кто-нибудь с опытом sed и regex помочь или подсказать, как это сделать?

В настоящее время я делаю это с помощью двух команд: я первый получаю «Мой Jabber ID: recorder@recorder.mydomain.com/hjE0dMPL», а затем замените My Jabber ID: пустой строкой.

grep -EiEio '\bMy Jabber ID: (recorder@[A-Z0-9.-]+\.[A-Z]{2,4}.*)\b' browser.0.txt | sed 's/^My Jabber ID: //g'

Хотя было бы элегантнее сделать это одной командой.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
1
0
159
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Для этого вы должны использовать правильный анализатор json, например jq, но если вы по какой-то причине не можете использовать jq, вы можете использовать sed:

sed -rn 's/(^.*My Jabber ID: )(.*)(".*$)/\2/p' file

Включите регулярные выражения с помощью -r, а затем разделите строку на три части с помощью регулярных выражений, заменив строку только второй частью и распечатав.

Вы можете решить это напрямую с помощью grep. Предположим, ваш контент находится в файле test.txt:

 cat test.txt |grep -Po '"value": "My Jabber ID: \K[^"]*'

вернется

recorder@recorder.room-test5.11sight.com/hjE0dMPL

Другие вопросы по теме