开发者

sed regular expressions address ranges

开发者 https://www.devze.com 2023-01-12 07:40 出处:网络
I have a txt file that looks something like this ----------------------------------- 开发者_JAVA技巧RUNNING PROCESSES

I have a txt file that looks something like this

-----------------------------------
     开发者_JAVA技巧      RUNNING PROCESSES
-----------------------------------

ftpd
kswapd
init
etc..

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

mypc.local.com

With sed I want to just get one section of this file. So just the RUNNING PROCESSES section, however I seem to be failing to get my regexp right to do so.

I got this far

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

however it keeps complaining about

-e expression #1, char 26: unknown commmand `,'

Can anybody help??


Did you mean:

sed -n '/RUNNING PROCESSES/,/HOSTNAME/p' linux.txt | 
  sed -e '/^[- ]/d' -e '/^$/d'


I would probably prefer to use awk for that:

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

That awk will give you:

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

ftpd
kswapd
init
etc..

You can then pipe that through sed '/^$/d' to filter out the blank lines.


Here is another variable of the answer accepted, but not extra call to another sed process

sed -n '/RUNNING PROCESSES/,/HOSTNAME/{s/RUNN.*\|HOSTNAME//;s/--*//;/^$/!p}' file
0

精彩评论

暂无评论...
验证码 换一张
取 消