Existe-t-il une commande Unix magique pour imprimer une partie d’un fichier? J’ai un fichier qui compte plusieurs millions de lignes et je voudrais ignorer le premier million de lignes et imprimer le prochain million de lignes du fichier.
Merci d’avance.
Pour extraire des données, sed
est votre ami.
En supposant une tâche unique que vous pouvez entrer dans votre ligne de commande:
sed -n '200000,300000p' file | enscript
“num comma (,) number” est une forme d’une plage cmd dans sed. Celui-ci commence aux lignes 2 000 000 et * p * jusqu’à ce que vous atteigniez 3 000 000.
Si vous voulez que la sortie aille à votre écran, supprimez le | enscript
| enscript
enscript
est un utilitaire qui gère le processus d’envoi de données aux imprimantes compatibles Postscript. Ma dissortingbution Linux ne l’a pas, donc ce n’est pas forcément un utilitaire standard. J’espère que vous savez à quelle commande vous devez redirect pour obtenir une sortie imprimée sur papier.
Si vous voulez “imprimer” dans un autre fichier, utilisez
sed -n '200000,300000p' file > smallerFile
IHTH
Je suggérerais awk
car c’est un peu plus facile et plus souple que sed
:
awk 'FNR>12 && FNR<23' file
où FNR
est le numéro d'enregistrement. Ainsi, les lignes ci-dessus sont imprimées au-dessus de 12 et moins 23.
Et vous pouvez le rendre plus précis comme ceci:
awk 'FNR<100 || FNR >990' file
qui imprime des lignes si le numéro d'enregistrement est inférieur à 100 ou supérieur à 990. Ou des lignes de plus de 100 et des lignes contenant "fred"
awk 'FNR >100 || /fred/' file