Que tal o KISS
sed '1,/^Previous/!d' file | head -n -2
Como posso imprimir o conteúdo de um arquivo menos tudo, incluindo e abaixo da linha acima da primeira ocorrência de um padrão?
Digamos que o padrão seja "^ Previous" na linha 15; então eu gostaria de imprimir linhas 1-13.
sed
pode fazer isso sozinho:
sed -n '$!N;/.*PATTERN.*/q;P;D' infile
É muito simples: ative o modo silencioso, use uma janela deslizante (via N
e D
, para que sempre haja duas linhas no espaço padrão), q
uit se encontrar PATTERN
caso contrário P
rint a primeira linha no espaço padrão e reinicie o ciclo.
Com gnu sed
é ainda menor, pois pode Q
uit sem impressão automática, pelo que pode ignorar o modo silencioso:
sed '$!N;/.*PATTERN.*/Q;P;D' infile
Tags text-processing