Jump to content
Калькуляторы

Получить секцию, начинающуюся с определенной строки и заканчивающуюся пустой строкой

Есть примерно такой файл:

## Primary interface (localnet, internet, hotspot)

# localnet
auto eth1.20
iface eth1.20 inet static
address 1.2.3.4
netmask 255.255.255.0
up   route add -net 10.0.0.0 netmask 255.0.0.0 gw 10.2.3.250
down route del -net 10.0.0.0 netmask 255.0.0.0 gw 10.2.3.250

# internet
auto eth1.100
iface eth1.100 inet static
address 5.6.7.8
netmask 255.255.255.128
up   route add default gw 5.6.7.9
down route del default gw 5.6.7.9

# private
auto eth1.900
iface eth1.900 inet static
address 11.12.13.14
netmask 255.255.0.0

# linknet
auto eth1.390
iface eth1.390 inet static
address 21.22.23.24
netmask 255.255.255.0

 

Мне нужно получить из нее эту секцию:

# private
auto eth1.900
iface eth1.900 inet static
address 11.12.13.14
netmask 255.255.0.0

то есть блок строк, начинающийся с "# private" и оканчивающийся пустой строкой или концом файла.

Думаю что для этого нужно использовать sed, но с этим инструментом знаком слабо.

Не подскажите, как получить нужное?

Share this post


Link to post
Share on other sites

man awk

man sed

man grep

 

На опеннете есть раздел программирования, там бывают специалисты.

 

Пример:

grep "# private" -A 4 file
или 
grep "# private" -A 5 file | grep -V ^$ 

Edited by vlad11

Share this post


Link to post
Share on other sites

sed -n '/# private/,/^$/p' /etc/network/interfaces

Edited by bos9

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this