Me pregunto si hay una manera simple de operar en ciertas líneas con números de línea preasignados.
Digamos que quiero generar las líneas 1, 7, 14 y 16 de un archivo, simplemente puedo hacer
sed -n '1p;7p;14p;16p' input_file
pero esto se vuelve más complicado cuando la operación no es solo imprimir, y no quiero escribir el mismo comando largo 4 veces (y sí, sé que puedo construir este comando sed largo sustituyendo la misma variable bash 4 veces, pero eso no es lo suficientemente ideal ...), es decir
sed -n '1{long_command};7{long_command};14{long_command};16{long_command}' input_file
¿Hay alguna manera de hacer la operación en estas líneas específicas de mi archivo? Estoy esperando algo como
sed -n '1,7,14,16p'
que ciertamente no funcionará en la forma actual.
Cualquier ayuda será apreciada. "No, no es posible." con explicaciones es también una respuesta que aceptaré.
awk
Respuestas:
Puedes usar ramas:
(tenga en cuenta que también puede agregar algunos
20,25b1
rangos de línea o/re/b1
incluir líneas que coincidan conre
).O podrías usar
awk
:O usando un hash:
(o
BEGIN{lines[1]lines[7]lines[14]lines[16]}
si no hay demasiados)fuente
Simplemente invierta su selección y elimínela:
fuente
Primera variante:
Puedes usar este truco:
Pruebas
Salida
Segunda variante:
Al principio, el auxiliar
sed
se usa para filtrar solo las líneas necesarias del archivo, luego estas líneas se canalizan a la principalsed
con el comando largo.fuente