Как я могу использовать команду grep для извлечения строки, которая является следующей строкой строки greping?

u не устанавливают ibus на ubuntu 13.10.it поставляют langue support уже.when u хотите активировать ваш язык, который ubuntu еще не успел .... u может пойти пойти в langue support -> install / remove languagues .. . tick на ваших языках u хотите установить.apply..it работать для меня с vietnamese unikey (по умолчанию vietnamese telex) С уважением ..

1
задан 23 October 2015 в 10:53

2 ответа

Вы можете получить желаемый результат за один раз grep, используя параметр -z, чтобы обрабатывать строки входного файла, которые должны быть разделены символами NUL, а не символами новой строки, чтобы символы новой строки могли быть сопоставлены буквально. Вы можете сделать:

grep -Pzo '!\s{8}lat[^\n]*\n\K[^\n]+' file.txt
-P позволит нам использовать PCRE, -o предоставит нам только желаемую часть !\s{8}lat[^\n]*\n будет соответствовать строке с lat после ! и 8 пробелов, также он будет соответствовать возвращающемуся символу новой строки, \K отменит это соответствие. [F12] будет соответствовать следующей строке, т.е. то, что мы хотим в качестве вывода.

Здесь я также предполагаю, что после lat нет пробела, если должно быть хотя бы пространство, которое вы можете сделать:

grep -Pzo '!\s{8}lat\s+[^\n]*\n\K[^\n]+' file.txt

Пример:

[ f3]
4
ответ дан 23 May 2018 в 16:27
awk
awk '/! {8}lat/ {a=1; next} a {a=0; print};' foo
sed
sed -n '/! \{8\}lat/{n;p}' foo
1
ответ дан 23 May 2018 в 16:27
  • 1
    Более идиоматично говорить что-то вроде awk 'f{print; exit} /^! {8}lat/ {f=1}' file. Примечание getline не рекомендуется вообще. – fedorqui 23 October 2015 в 12:25

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

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