Étant donné un fichier texte de longueur inconnue, comment puis-je lire, par exemple, toutes les lignes du fichier sauf les 2 premières? Je sais que je tail
vais me donner les N dernières lignes, mais je ne sais pas ce que N est à l'avance.
Donc pour un fichier
AAAA
BBBB
CCCC
DDDD
EEEE
Je voudrais
CCCC
DDDD
EEEE
Et pour un dossier
AAAA
BBBB
CCCC
J'aurais juste
CCCC
command-line
scripting
tail
unix-head
Nicholas MT Elliott
la source
la source
head
pour cela?En supposant que votre version de tail le supporte, vous pouvez spécifier le début de la queue après X lignes. Dans votre cas, vous feriez 2 + 1.
la source
Une solution simple utilisant awk:
la source
{ print }
est l'action par défaut et peut être omise.Essayez
sed 1,2d
. Remplacez-en 2 au besoin.la source
tail -n +linecount filename
commencera la sortie à la lignelinecount
defilename
, donctail -n +3 filename
devriez faire ce que vous voulez.la source
tail -n +17 filename
ferait. J'utilise bash / ubuntu LTStail
acceptaient la syntaxe que j'ai utilisée dans ma réponse originale, mais maintenant il faut utiliser l'-n
option explicite . J'ai mis à jour ma réponse en conséquence.Utilisez ceci, en supposant que le premier échantillon s'appelle sample1.dat alors
tail --lines=3 sample1.dat
qui imprimerait toutes les lignes de la 3ème ligne à la dernière ligne.Pour le deuxième échantillon, supposons à nouveau qu'il s'appelle sample2.dat ce serait ce qui afficherait
tail --lines=-1 sample2.dat
la dernière ligne ...la source
tail +3 anyfile
donne les résultats souhaités pour le cas général, tout entail --lines=N
nécessitant de connaître N à l'avance pour donner le résultat souhaité.tail
... ça ne devrait pas être "de bas en haut"? (Ba-dum TISH! Merci, je serai là toute la semaine ...)Je ne sais vraiment pas comment le faire à partir 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.J'espère que cela t'aides.
la source
utiliser awk pour obtenir toutes les lignes sauf les 2 dernières
awk pour obtenir tout sauf les 2 premières lignes
OU vous pouvez utiliser plus
ou juste bash
la source