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 / 13:32