Как мне распечатать удаленные строки в файле в новый файл одной командой?

FreeBSD tar ] не поддерживает формат xar , но еще раз портирует на помощь - archivers / xar кажется вам тем, что вам нужно!

0
28.02.2018, 13:45
4 ответа

Asumiendo que sus requisitos son:

  • Escriba las primeras 10 líneas del archivo A en el archivo B
  • Elimina las primeras 10 líneas del archivo A consed -i 1,10d A.txt

Puedes hacerlo de la siguiente manera:

head -10 A.txt > B.txt
sed -i 1,10d A.txt

El primer comando escribirá las primeras 10 líneas del archivo A.txt en B.txt
El segundo comando (sugerido por usted )eliminará las primeras 10 líneas del archivo A.txt

Tenga en cuenta que para obtener las primeras 10 líneas, debe hacerlo antes de que se eliminen esas líneas

0
28.01.2020, 02:24

Usando sedy el script sed

1,10{
    w otherfile
    d
}

Esto escribirá las líneas 1 a 10 en el archivo otherfilemientras las elimina de la entrada.

Con en -lugar de edición del archivo original (usando GNU sedaquí):

sed -i '1,10{w B.txt
        d}' A.txt

La nueva línea es necesaria para delimitar el nombre del archivo. O,

sed -i -e '1,10{w B.txt' -e 'd}' A.txt
4
28.01.2020, 02:24

puede lograr esto usando sed con tuberías

sed -n '1,10p' a.txt > b.txt | sed -i '1,10d' a.txt

las primeras 10 líneas de a.txtse copiarán en b.txty luego las primeras 10 líneas a.txtse eliminarán.

-1
28.01.2020, 02:24

Conksh93:

{ head >> B.txt; cat 1<>; A.txt; } < A.txt

Si su cates GNU cat, se quejará de que su salida estándar se refiere al mismo archivo que su entrada estándar. Puede solucionar eso usando cat|caten lugar de cat, o usar ksh93's catincorporado, por ejemplo, usando command /opt/ast/bin/caten lugar de cat, o poniendo /opt/ast/bindelante de $PATH.

El operador de redirección 1<>;se comporta como el operador estándar 1<>(abierto en modo lectura+escritura sin truncamiento)excepto que también trunca el archivo al final si el comando redirigido fue exitoso.

1
28.01.2020, 02:24

Теги

Похожие вопросы