Как я могу извлечь текст между двумя строками в файле журнала?

Ради полноты, так как Вы используете KDE, можно также интересоваться определенными приложениями KDE для этой задачи.

Чиновник KDE плазмоид RSS

Плазмоид, специально предназначенный для показа, питается рабочим столом, назван RSSnow:

enter image description here

его включенный в пакет плазменных дополнений виджетов. У Вас могут быть все виды эффектов прозрачности, при необходимости это зависит от Вашей плазменной темы. Я ненавижу прозрачный материал поэтому, что Вы видите, просто результат на моем рабочем столе.

Сценарии плазмоида от KDE-взгляда

Можно также найти некоторый неофициальный плазмоид RSS в KDE-взгляде:

http://kde-look.org/content/show.php/FeedView?content=154877

http://kde-look.org/content/show.php/Latest+news?content=155940

это сценарии плазмоида, которые будут установлены через, Получают Горячий Новый Материал:

- щелкните правой кнопкой по рабочему столу

- выберите, "добавляют новые виджеты"

- выберите, "получают новые виджеты"

- выберите "загрузку новые плазменные виджеты" и ищите их

оба только показывают один канал RSS за один раз, но у Вас может быть больше чем одно выполнение экземпляра.

Двоичные файлы плазмоида от KDE-взгляда

На KDE-взгляде можно также найти несколько двоичных файлов плазмоида:

http://kde-look.org/content/show.php/rssremix?content=102542

http://kde-look.org/content/show.php/Plasma+Feed?content=118140

необходимо загрузить исходный код и скомпилировать его, чтобы они работали, но они, кажется, немного устаревшая оценка с даты последнего обновления.

3
13.04.2017, 15:36
3 ответа

Если есть только один foo3 в строке

sed -n '/foo3=/{s/.*foo3=//;s/\S*=.*//;p}' file.txt

Отключить печать любой строки (параметры -n ), кроме той, которая была нажата p . Для строк, которые содержат foo3 = :

  1. Замените все до foo3 = включенным (. * Foo3 = ) ни на что ( // ).
  2. Удалите все, что начинается с некоторых ( * ) непробельных ( \ S ) символов с = .
  3. Печатает восстановление после двух замен ( p ).

Другое

sed -n 's/.*foo3=\([^=]*\)\s\+\S*=.*/\1/p' file.txt

Замените полную строку на образец ( \ 1 ) в скобках ( \ (... \) ), который состоит из любых символов, кроме = и поместите после foo3 = и перед некоторыми ( * ) пробелами ( \ s ), затем некоторые непробелы с = и напечатайте восстановление только тех строк, где такая замена была произведена.

4
27.01.2020, 21:12

Попробуйте это:

$ grep -Po "(?<=foo3\=).*(?=\s*foo4)" file.txt
1
27.01.2020, 21:12
sed '/^foo3=/P;/\n/!s/[^ ]\{1,\}=/\n&/g;D' <infile >outfile

Возможно, вам придется использовать буквальную новую строку вместо n выше, но при этом будет выведено только содержимое между foo3 и foo4.

Для более быстрой обработки, уточните:

sed '/\n/s/ [^ ]*=.*//p;/\n/!s/foo3=/\n\n&/;D' | grep .

Или с дополнительным grep верхняя строка также может быть намного быстрее:

sed 's/[^ ]\{1,\}=/\n&/g' | grep '^foo3='
2
27.01.2020, 21:12

Теги

Похожие вопросы