¿Qué hace sed -i '1d'?

28

Entiendo que sedes un comando para manipular archivos de texto.

Desde mi Google, parece que -isignifica realizar la operación en el archivo en sí, ¿es correcto?

¿Qué hay de '1d'?

Jérôme Verstrynge
fuente

Respuestas:

43

En sed:

  • -i la opción editará el archivo de entrada en el lugar

  • '1d' eliminará la primera línea del archivo de entrada

Ejemplo:

% cat file.txt 
foo
bar

% sed -i '1d' file.txt 

% cat file.txt        
bar

Tenga en cuenta que, la mayoría de las veces, es una buena idea hacer una copia de seguridad mientras usa la -iopción para que tenga una copia de seguridad del archivo original en caso de cualquier cambio inesperado.

Por ejemplo, si haces:

sed -i.orig '1d' file.txt 

el archivo original se mantendrá como file.txt.origy el archivo modificado será file.txt.

heemayl
fuente
44
También puede hacer una "ejecución en seco" sin -iver primero qué sucede y luego usar -ipara cambiar el archivo.
Baard Kopperud
15

1. a)

sed '1d' file.txt

Imprime el contenido de file.txt; excluyendo la primera línea; a la salida estándar.


2. a)

sed -i    '1d' file.txt # GNU, NetBSD, OpenBSD
sed -i '' '1d' file.txt # FreeBSD, macOS

Imprime el contenido de file.txt; excluyendo la primera línea; copia en file.txt; sobrescribiendo el original.


2. b)

sed -i.back '1d' file.txt

Crea una copia de seguridad del original (como file.txt.back), antes de realizar cambios. Excepto con FreeBSD sed, el sufijo (aquí .back) debe adjuntarse a la -iopción (en el mismo argumento, sin espacio entre -iy .back).


3. a)

sed '2d' file.txt

Imprime el contenido de file.txt; excluyendo la segunda línea; a la salida estándar.
(Especificar cualquier número eliminará la línea correspondiente).

También compatible con la -ibandera.


3. b)

sed '1!d' file.txt

Imprime el contenido de file.txt; excluyendo todos excepto la primera línea; a la salida estándar.
(En otras palabras, solo se imprime la primera línea).

También compatible con la -ibandera.


3. c)

sed '$d' file.txt

Imprime el contenido de file.txt; excluyendo la última línea; a la salida estándar.

También compatible con la -ibandera.

voces
fuente
FYI: La versión BSD (es decir, el estándar macOS de facto) generalmente no cooperará a menos que cree una copia de seguridad (2. b), o utilice el método de derivación de copia de seguridad (2. c). La versión de GNU no le pedirá esto. Editará destructivamente y sobrescribirá los archivos existentes sin dudarlo.
voces
4

En sed -htener:

  -i[SUFFIX], --in-place[=SUFFIX]
             edit files in place (makes backup if SUFFIX supplied)

y 'realizar la operación en el archivo mismo'. absoluto es.

Y mandijo: 'Sed es un editor de stream. Se utiliza un editor de flujo para realizar transformaciones de texto básicas en un flujo de entrada (un archivo o entrada de una tubería).

como tu pregunta

sed -i '1d' file_name

significa: eliminar la primera línea del archivo "file_name"en el lugar y hacer una copia de seguridad en el archivo. (al igual que editar archivo y eliminar la primera línea directamente).

Siete
fuente