диапазоны адресов регулярных выражений sed

У меня есть текстовый файл, который выглядит примерно так

-----------------------------------
           RUNNING PROCESSES
-----------------------------------

ftpd
kswapd
init
etc..

---------------------------------
          HOSTNAME
--------------------------------

mypc.local .com

С помощью sed я хочу получить только один раздел этого файла. Так что просто секция RUNNING PROCESSES, однако мне кажется, что я не смог правильно настроить свое регулярное выражение.

Я дошел до этого

sed -n '/^-./,/RUNNING PROCESSES/, /[[:space::]]/p' linux.txt | more

, однако он продолжает жаловаться на

-e выражение # 1, char 26: unknown commmand `, '

Кто-нибудь может помочь ??

1
задан msw 21 August 2010 в 13:56
поделиться

3 ответа

Вы имели в виду:

sed -n '/RUNNING PROCESSES/,/HOSTNAME/p' linux.txt | 
  sed -e '/^[- ]/d' -e '/^$/d'
2
ответ дан 2 September 2019 в 21:56
поделиться

Вот еще одна переменная принятого ответа, но не дополнительный вызов другого процесса sed

sed -n '/RUNNING PROCESSES/,/HOSTNAME/{s/RUNN.*\|HOSTNAME//;s/--*//;/^$/!p}' file
0
ответ дан 2 September 2019 в 21:56
поделиться

Я бы, вероятно, предпочел использовать для этого awk :

awk '/RUNNING PROCESSES/ {s=2}
     /^---/              {s=s-1}
                         {if(s>0){print}}' linux.txt

Это awk даст вам:

           RUNNING PROCESSES
-----------------------------------

ftpd
kswapd
init
etc..

Затем вы можете передать это через sed '/ ^ $ / d' для фильтрации пустых строк.

0
ответ дан 2 September 2019 в 21:56
поделиться
Другие вопросы по тегам:

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