Próbuję przeczytać plik pasujący do wzoru, ale wartości, które chcę, są w kolejnych kolejnych liniach i są dynamiczne (oznaczające różną liczbę wartości dla różnych plików). Czy ktoś może mi pomóc w osiągnięciu tej logiki za pomocą SED?

Plik 1:

hosts:
 - abc
 - def

Plik 2:

hosts:
 - abc
 - def
 - ghi

Chcę uzyskać wartości gospodarzy za pomocą sed. sed of file 1 powinien wrócić

 - abc
 - def

I sed of file2 powinien wrócić

 - abc
 - def
 - ghi

Dzięki.

0
wasay 28 czerwiec 2017, 04:04

3 odpowiedzi

Najlepsza odpowiedź

Aby wydrukować linie między hosts a następnie pustą linią (jak wspomniano w komentarzach):

sed '/^hosts/,/^$/{//d;}' file
0
SLePort 28 czerwiec 2017, 05:06
cat file1 | tail -n+2

Zrobi to, jeśli po prostu masz nagłówek jeden linii, a następnie gospodarze.

0
MrE 28 czerwiec 2017, 04:35

To jest trochę niezdarna, ale wydaje się działać:

sed -n -e ':a' -e '/\n$/{s/hosts:\n//; p;}' -e '/hosts/N' -e '/hosts/ b a' filename
0
Beta 28 czerwiec 2017, 01:52