диапазоны адресов регулярных выражений sed - PullRequest
1 голос
/ 21 августа 2010

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

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

ftpd
kswapd
init
etc..

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

mypc.local.com

С помощью sed я хочу получить только один раздел этого файла.Так что просто раздел «ПРОЦЕССЫ РАБОТЫ», однако мне кажется, что я не могу правильно настроить свое регулярное выражение.

Я получил это далеко

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

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

-e выражение # 1, символ 26: неизвестная команда `, '

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

Ответы [ 3 ]

2 голосов
/ 21 августа 2010

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

sed -n '/RUNNING PROCESSES/,/HOSTNAME/p' linux.txt | 
  sed -e '/^[- ]/d' -e '/^$/d'
0 голосов
/ 21 августа 2010

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

sed -n '/RUNNING PROCESSES/,/HOSTNAME/{s/RUNN.*\|HOSTNAME//;s/--*//;/^$/!p}' file
0 голосов
/ 21 августа 2010

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

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

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

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

ftpd
kswapd
init
etc..

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...