muchas maneras posibles. Por ejemplo: si se asume que su entrada está en list.txt
PATTERN="R2-01.sql"
sed "0,/$PATTERN/d" <list.txt
porque, alfunciona solo en GNU sed, (p. no funciona en OS X), aquí hay una solución manipulada. ;)
PATTERN="R2-01.sql"
(echo "dummy-line-to-the-start" ; cat -) < list.txt | sed "1,/$PATTERN/d"
Esto agregará una línea ficticia de la salida, por lo que el patrón real debe estar en línea el 1 o superior, por lo que el 1,/pattern/
hará obras - Borrado de todo, desde la línea 1 (simulado uno) hasta el patrón.
O puede imprimir líneas según el modelo y eliminar la primera, como:
sed -n '/pattern/,$p' < list.txt | sed '1d'
con awk, por ejemplo:
awk '/pattern/,0{if (!/pattern/)print}' < list.txt
o, mi favorito utilizar el siguiente comando perl:
perl -ne 'print unless 1../pattern/' < list.txt
borra la 1.ª línea cuando el patrón está en 1st l ine ...
otra solución es inversa-delete-revertir
tail -r < list.txt | sed '/pattern/,$d' | tail -r
si tiene el comando tac
usarlo en lugar de tail -r
Lo interesant es que el /pattern/,$d' works on the last line but the
1,/patrón/d` doesn' t en el primero.
¿Puedo sugerir que también Etiqueta esta pregunta con 'sed ¿? Podría hacerlo yo mismo, pero mi edición podría no ser aceptada. Gracias. –