¿Cómo puedo eliminar cada línea impar, usando sed?¿Cómo eliminar cada otra línea con sed?
remove
keep
remove
keep
remove
...
¿Cómo puedo eliminar cada línea impar, usando sed?¿Cómo eliminar cada otra línea con sed?
remove
keep
remove
keep
remove
...
GNU SED tiene un modo adecuado direccionamiento:
sed -n '1~2!p' file
lo que significa, a partir de la línea 1, y con el paso 2, imprimir todas las otras líneas.
De manera equivalente, se puede eliminar la -n
, y borrar las líneas que coincidan:
sed '1~2d'
También se puede hacer uso de awk:
awk 'NR%2==0' file
(Siempre que el número de línea es un múltiplo de 2, imprimir la línea)
¡Gracias por esto! muy útil. –
Aparece el error "código de comando inválido ~" cuando pruebo esto con sed on macos. –
Aquí está lo más corto que se me ocurre:
sed -n 'g;n;p' file
Se debe trabajar con versiones no GNU de sed
(así como GNU sed
).
+1 para portabilidad –
¡Esto también funciona en OS X! (A diferencia de 'sed -n '1 ~ 2! P''.) Toma las líneas 2,4,6, ... No pude deducir de la página del manual cómo tomar las líneas 1,3,5, .. Sin embargo, agregar una primera línea es un truco simple. – Nagel
@Nagel: Pruebe: 'sed -n 'p; n' file' o' sed 'n; d' file' para generar las líneas impares. Por cierto, no creo que la 'g' sea necesaria para generar las líneas pares:' sed -n 'n; p' file' parece funcionar. –
Uno más awk:
awk getline file
solución Perl:
perl -ne 'print if $. % 2 == 0' file
$.
es el número de línea
El chico pidió 'sed', que muestra las habilidades de lectura pobres de su parte, pero alguien podría resultar útil, por lo que 1. –
Respondí porque sed, awk y perl a menudo se pueden usar indistintamente. Si bien existen diferencias en cuanto a velocidad y simplicidad, todas se usan en la línea de comando o dentro de las secuencias de comandos de la shell. –
La mitad de las preguntas de esta mañana parece ser inocentes chistes, así ... – Will
Si se trata de los Inocentes de, a continuación, la respuesta debe ser: grEP No input.txt – paxdiablo
@paxdiablo: Pero ¿qué pasa con 'grep -v Remove'? – Cascabel