J'utilise le shell AIX 6.1 ksh.
Je veux utiliser une doublure pour faire quelque chose comme ça:
cat A_FILE | skip-first-3-bytes-of-the-file
Je veux sauter les 3 premiers octets de la première ligne; Y a-t-il un moyen de faire cela?
la source
J'utilise le shell AIX 6.1 ksh.
Je veux utiliser une doublure pour faire quelque chose comme ça:
cat A_FILE | skip-first-3-bytes-of-the-file
Je veux sauter les 3 premiers octets de la première ligne; Y a-t-il un moyen de faire cela?
Old school - vous pouvez utiliser dd
:
dd if=A_FILE bs=1 skip=3
Le fichier d'entrée est A_FILE
, la taille du bloc est de 1 caractère (octet), ignorez les 3 premiers «blocs» (octets). (Avec certaines variantes de dd
GNU dd
, vous pouvez utiliser bs=1c
ici - et des alternatives comme bs=1k
lire en blocs de 1 kilo-octet dans d'autres circonstances. Le dd
sur AIX ne le prend pas en charge, il semble; la variante BSD (macOS Sierra) ne prend pas en charge c
mais prend en charge k
, m
, g
, etc.)
Il existe également d'autres façons d'obtenir le même résultat:
sed '1s/^...//' A_FILE
Cela fonctionne s'il y a 3 caractères ou plus sur la première ligne.
tail -c +4 A_FILE
Et vous pouvez aussi utiliser Perl, Python et ainsi de suite.
dd if=A_FILE bs=1 skip=3
dans AIX 6.1Au lieu d'utiliser,
cat
vous pouvez utilisertail
comme tel:Cela imprimera tout le fichier à l'exception des 3 premiers octets. Consultez
man tail
pour plus d'informations.la source
/usr/xpg4/bin/tail
, au moins sur ma machine. Bon conseil quand même!Je devais récemment faire quelque chose de similaire. J'aidais avec un problème de support sur le terrain et je devais laisser un technicien voir les tracés en temps réel pendant qu'ils apportaient des modifications. Les données sont dans un journal binaire qui croît tout au long de la journée. J'ai un logiciel qui peut analyser et tracer les données des journaux, mais ce n'est actuellement pas en temps réel. J'ai capturé la taille du journal avant de commencer à traiter les données, puis je suis entré dans une boucle qui traiterait les données et chaque passage créerait un nouveau fichier avec les octets du fichier qui n'avaient pas encore été traités.
la source
ls
; avez-vous envisagé d'utiliser à lastat -c'%s' "${IFILE}"
place de cels|awk
combo? Autrement dit, en supposant que GNU coreutils ...Si l'on a Python sur son système, on peut utiliser un petit script python pour profiter de la
seek()
fonction pour commencer la lecture au nième octet comme ceci:Et l'utilisation serait comme ça:
Notez que le nombre d'octets commence à 0 (donc le premier octet est en fait l'index 0), donc en spécifiant 3, nous positionnons effectivement la lecture pour commencer à 3 + 1 = 4e octet
la source