imprimer une partie du fichier

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 

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