Заменить символ на основе диапазона координат

Parece que el archivo tar es defectuoso o no cumple con los estándares.

Tenga en cuenta que obtuve el archivo como imagen bz2 y no tuve problemas con el uso de bzip2 -d gcc-4.9.0.tar.bz2 < tar tvf -.

El archivo descomprimido tiene la suma de comprobación md5 :6b8f599053a52e7c2076485d1ad3e747.

Ahora estoy buscando el archivo.gz, veamos qué obtengo...

OK, aquí está la suma de comprobación md5 de gcc -4.9.0.tar.gz fe8786641134178ecfeee2dc7644a0d8 que es lo mismo que ves.

Tenga en cuenta que su problema generalmente ocurre cuando el archivo ha sido creado por gtar, pero en casos raros resulta en un directory checksum error.

Si desea comprender mejor lo que sucede, le recomiendo que utilice el programa tartestque viene con star.

Obtener lo último schilytoolsde:

http://sourceforge.net/projects/schilytools/files/

compile y luego ejecute el programa tartest/OBJ/*/tartest < gcc-4.9.0.tar.

Hice esto y descubrí que la razón es que el archivo utiliza un "tipo de archivo" específico del proveedor de GNU 'L' en un encabezado tar.

IMPORTANTE :si GNU tar cumplía la mitad del estándar o al menos estaba libre de errores -, este problema no ocurrió ya que el nombre del archivo en cuestión encajaba perfectamente en POSIX.1 -1988 100+255 nombre -esquema. Así que esta es otra pista de por qué la gente debería evitar usar GNU tar en absoluto.

Recomiendo usar star.

Cada característica individual en starestá completamente bajo el control de una estructura de descripción de propiedades. Si especifica un formato de archivo, starnunca creará contenido de archivo relacionado con un formato de archivo diferente.

Si, p. llamar:

star -c -f out.tar -Hustar somedir

starutilizará un formato de archivo POSIX.1 -1988 compatible al 100 % y, en caso de que haya un archivo que no encaje en ese formato de archivo, starescribe una advertencia en lugar de archivar el archivo utilizando métodos no estándar.

Por cierto :Aquí está el conjunto de cambios, donde Sun agregó soporte para esta característica única del proveedor:

changeset:   11995:caff1bd711f5 
user:        Rich Burridge  
date:        Thu Mar 25 13:21:39 2010 -0700 

description: 
        6202362 Solaris tar can't unpack files created with GNU tar 

modified: 
   usr/src/cmd/tar/tar.c 

0
11.07.2019, 16:18
2 ответа

Вот короткий сценарий оболочки:

#!/bin/bash
start=10
end=13
first=$(head -n 1 file)
width=${#first}
text=$(paste -sd "" file)
mod="${text:0:start-1}$(tr N P <<<"${text:start:end-start+1}")${text:end}"
grep -Eo ".{1,$width}" <<<"$mod"
NNNNN
NNNNP
PPPNN
NNNNN
0
28.01.2020, 02:39
$ tr -d '\n' <file | perl -pe 'substr($_, 9, 4, "P"x4)' | fold -w 5
NNNNN
NNNNP
PPPNN
NNNNN

Это сначала удаляет все новые строки из данных во входном файле, затем использует substr()в Perl для замены текста по смещению 9 длины 4 на верхний -регистр P. Затем используется утилита foldдля сворачивания строк по пять символов. В конце вывода нет новой строки.

1
28.01.2020, 02:39

Теги

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