J'ai un mini-système avec un nombre limité seulement de binaires ( bash
, cp
, cat
, sed
, ...). Je n'ai pas de tail
commande, et je me demande si je pourrais émuler la fonctionnalité de queue avecsed
cat foo.txt | tail -n 10
Je sais que je peux imprimer les lignes 1 à 10 avec sed cat foo.txt | sed -n '1,10p'
, mais comment imprimer les 10 dernières lignes?
Réponses:
Vous pourriez faire quelque chose comme ça:
la source
sed -e :a -e '$q;N;11,$D;ba' foo
pour correspondre à la question.sed -e '1,11p' -e :a -e '$q;N;11,$D;ba'
Mais j'aimerais quand même comprendre la partie queue !!!mais si vous n'avez pas de tac, vous ne pouvez utiliser que sed de cette façon:
la source
Est
expr
disponible avec votre système? Ensuite, vous pouvez essayer d'évaluer le numéro de ligne souhaité après avoir compté le nombre total de lignes dans le fichier.J'ai créé un fichier nommé
tmp
contenant les numéros de 1 à 20 dans chaque ligne.Bien sûr, vous pouvez utiliser
wc -l
, si disponible.La commande pour calculer le nombre total de lignes dans le fichier provient des lignes sed one . Cependant, je n'ai pas vérifié si cela fonctionne aussi avec des fichiers vides.
PS Si
expr
n'est pas disponible, vous pouvez utiliser des nombres soustraits dans Bash comme indiqué ci-dessous:la source