grep для извлечения подстрок в строке

У меня есть вывод для команды, как показано ниже.

Heading1 I am one value. I am another value. I am third value. Heading2 I am some value. I am someother value. I am new value. Heading3 

Как мы видим, в начале строки есть пробел, если это не заголовок . Я пытаюсь извлечь все значения под заголовком 1. Мне нужен вывод как,

 I am one value. I am another value. I am third value. 

Если я попробую команду,

 grep mycommand | heading1 

Это дает мне только строку Heading1.

ОБНОВИТЬ:

Я знаю, мне нужно извлечь строку из начала Heading1 . Но я не знаю конечную строку (т. Е. Здесь я упомянул как Heading2, но я не буду знать).

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

3 Solutions collect form web for “grep для извлечения подстрок в строке”

Примерно как это сделать:

 $ sed -n -e '/Heading1/,/Heading2/ p' file.txt | grep "^ " | sed 's/^[ ]\+//g' I am one value. I am another value. I am third value. 

Немного более сжатая версия, использует pcregrep который позволяет многолинейное соответствие:

 $ pcregrep -M 'Heading1(\n|.)*Heading2' file.txt | grep "^[ ]\+" I am one value. I am another value. I am third value. 

Чтобы избавиться от пробелов в начале, используя этот метод, вы можете использовать средство PCRE grep :

 $ pcregrep -M 'Heading1(\n|.)*Heading2' a.txt | grep -oP "^[ ]{3}\K.*" I am one value. I am another value. I am third value. 

Наконец, это решение sed и awk .

 $ sed -n -e '/Heading1/,/Heading2/ p' file.txt | awk '/^ / {sub(/^[ ]+/, ""); print}' I am one value. I am another value. I am third value. 

Это должно работать:

 yourcommand | grep -A3 Heading1 | grep -v Heading1 

Вот решение awk:

 yourcommand | awk '/Heading1/ {for(n=0; n<3; n++) {getline; $1=$1; print}}' 

Обновить

Если между Heading1 и конечной строкой только строки начинаются с пробела, вы можете сделать так:

 yourcommand | awk '/Heading1/ {flag=1;next} /^\w+/ {flag=0} {$1=$1} flag' 
  • scp при попытке скопировать файлы из Linux в windows
  • Сравнение значений в одной строке
  • как извлечь некоторые строки в файл данных по сравнению с другим файлом данных? (слияние)
  • Сценарий Bash для извлечения ключевых слов из текущего каталога
  • Вывод сценария оболочки неправильно разбивается при передаче в качестве аргумента скрипту
  • Как я могу более эффективно собирать данные от пользователей на vm?
  • Цикл между открытыми окнами с wmctrl
  • Разбиение файла на две части на основе определенной строки
  • найти и заменить значения двойной скобки
  • Regex - проверка скрипта для разрешенных символов
  • Использование sed для замены строки со многими специальными символами?
  • Interesting Posts
    Linux и Unix - лучшая ОС в мире.