Aqui, deixe-me fazer uma modificação cosmética trivial
para o arquivo de entrada fornecido na pergunta:
% cat myfile
red
orange
start_data
one
two
three
four
end_data
yellow
green
Eu simplesmente substituí as linhas otherdata por outros dados distintos,
então podemos nos referir a cada linha no arquivo de entrada de forma única, por conteúdo,
sem ter que dizer "a primeira linha",
desde que isso é aparentemente sujeito a má interpretação,
ou "o primeiro otherdata line", que é um pouco detalhado
(e, pelo que sei, também pode estar sujeito a interpretações erradas).
Agora, provavelmente a coisa mais próxima que você encontrará em sua primeira tentativa é
% sed -n '/start_data/,/end_data/p' myfile | sed '1d;$d'
one
two
three
four
Sua primeira tentativa ( sed -n '/start_data/,/end_data/{1d;$d;p}' myfile ) "engasga"
porque (como John1024 disse) a linha 1 é a red line *
e linha $ é a green linha ** .
O 1d;$d; não tem efeito porque essas linhas
(junto com, de fato, todos das linhas otherdata / colordata)
já estão excluídos pelo intervalo /start_data/,/end_data/ .
por
18.06.2015 / 11:32