Tengo varios archivos que contienen información de texto ascii en las primeras 5-10 líneas, seguidos de información de matriz bien tabulada. En un script de shell, quiero eliminar estas primeras líneas de texto para poder usar la información de matriz pura en otro programa. ¿Cómo puedo usar los comandos bash shell para hacer esto?
Si es de alguna ayuda, estoy usando RedHat y un sistema Linux Linux.
sed -i -e 1,3d yourfile
. Esto no hará eco de nada, solo modificará el archivo en el lugar. Si no necesita canalizar el resultado a otro comando, esto es más fácil.sed -i
específicamente. La mayoría de las implementaciones simplemente eliminan el archivo y lo reemplazan por uno nuevo, que no funciona para los enlaces, ya que terminas dejando el original en su otra ubicación.sed -i '1,3d' file.txt
Esto elimina las primeras 3 líneas de file.txt.
fuente
Si las líneas tabuladas son las que tienen un carácter de tabulación:
(
␉
siendo un carácter de tabulación literal) o equivalenteEn un script bash / ksh / zsh, puede escribir
$'\t'
para una pestaña, por ejemplo,grep $'\t'
osed -n $'/\t/p'
.Si desea eliminar 10 líneas al comienzo del archivo:
(tenga en cuenta que es
+11
para eliminar 10 líneas, porque+11
significa "comenzar desde la línea 11" y las líneas de números de cola desde 1) oEn Linux, puede aprovechar la
-i
opción de GNU sed para modificar los archivos en su lugar:O puede usar un bucle de shell y archivos temporales:
O si no desea modificar los archivos en su lugar, sino que les da un nombre diferente:
fuente
Puede usar Vim en modo Ex:
1
pasar a la primera línea5
seleccione 5 líneasd
Eliminarx
guardar y cerrarfuente
echo "a \ nb" | sed '1d' # elimina la primera línea
cat list.txt | sed '1d'> list.csv # lee list.txt y escribe list.csv sin la primera línea
Otros comandos útiles:
grep '^ |' # encuentra el primer carácter (tubería |)
sed 's / | // g' # elimina la tubería
sed 's / // g' # elimina espacio
fuente
Por porcentaje
Usando
bash
, para limpiar un archivo usando un número de porcentaje en lugar de un número absoluto de líneas:Tenga cuidado porque ese comando puede ser destructivo ya que elimina el contenido in situ, sin crear una copia.
Elimina el primer 75% de las líneas del archivo mencionado.
fuente