Étant donné un fichier texte de longueur inconnue, comment puis-je lire, par exemple, tous sauf les 2 premières lignes du fichier? Je sais que tail
me donnera les N dernières lignes, mais je ne sais pas ce que N est en avance.
Donc pour un fichier
AAAA
BBBB
CCCC
DDDD
EEEE
Je voudrais
CCCC
DDDD
EEEE
Et pour un fichier
AAAA
BBBB
CCCC
J'aurais juste
CCCC
tail --help
donne ce qui suit:
-n, --lines=K output the last K lines, instead of the last 10;
or use -n +K to output lines starting with the Kth
Donc, pour filtrer le premier 2
lignes, -n +3
devrait vous donner le résultat que vous recherchez (à partir du 3ème).
En supposant que votre version de tail le prenne en charge, vous pouvez spécifier le début de la queue après X lignes. Dans votre cas, vous feriez 2 + 1.
tail -n +3
[mdemaria@oblivion ~]$ tail -n +3 stack_overflow.txt
CCCC
DDDD
EEEE
Une solution simple utilisant awk:
awk 'NR > 2 { print }' file.name
Essayez sed 1,2d
. Remplacez 2 si nécessaire.
tail -n +linecount filename
commence la sortie à la ligne linecount
de filename
, donc tail -n +3 filename
devrait faire ce que vous voulez.
Utilisez ceci en supposant que le premier échantillon s'appelle sample1.dat puis tail --lines=3 sample1.dat
qui imprimera toutes les lignes de la 3ème à la dernière ligne.
Pour le deuxième échantillon, supposons à nouveau qu’il s’appelle échantillon2.dat, il s’agirait de tail --lines=-1 sample2.dat
qui afficherait la dernière ligne ...
Je ne sais vraiment pas comment le faire de la queue ou de la tête, mais avec l'aide de wc -l
(Nombre de lignes) et de l'expression bash, vous pouvez y parvenir.
tail -$(( $( wc -l $FILE | grep -Eo '[0-9]+' ) - 2 )) $FILE
J'espère que cela t'aides.