Si je cat -n text.txt
numérote automatiquement les lignes, comment puis-je utiliser la commande pour afficher uniquement certaines lignes numérotées.
text-processing
cat
Geckono1
la source
la source
tail
+head
peut également le faire, comme le peutawk
Réponses:
Utilisation
sed
Usage
Pour imprimer une ligne (5)
Pour imprimer plusieurs lignes (5 et 8)
Pour imprimer une plage spécifique (5 - 8)
Pour imprimer une plage avec une autre ligne spécifique (5 - 8 & 10)
la source
Une façon de le faire est d'utiliser
sed
:où 11 est le numéro de la ligne à supprimer.
Ou pour supprimer tout sauf 11:
Les gammes sont également possibles:
Et
cat -n
n'est même pas nécessaire:la source
Vous pouvez utiliser awk directement.
en remplaçant "1" par le numéro de ligne souhaité.
la source
En fonction des objectifs, j'aime bien la tête ou le grep
cat /var/log/syslog -n | head -n 50 | tail -n 10
retournera les lignes 41 à 50.
ou
cat /var/log/syslog -n | grep " 50" -b10 -a10
montrera les lignes 40 à 60. Le problème avec la méthode grep est que vous devez utiliser un compte pour le remplissage des numéros de ligne (notez l'espace)
Les deux sont assez pratiques pour analyser les fichiers journaux.
la source
cat
cependant besoincat
ne peut pas faire ce que l'OP veutComme d’autres l’ont montré, il n’est pas nécessaire d’utiliser
cat -n
. D'autres programmes le feront pour vous. Si, toutefois, vous avez vraiment besoin d'analyser le résultatcat -n
et de ne montrer que des lignes spécifiques (par exemple, 4-8, 12 et 42), vous pouvez effectuer les opérations suivantes:Dans
awk
,$1
le premier champ, de sorte que cette commande imprime toutes les lignes dont les premiers champs sont i) entre 4 et 8 (inclus) ou ii) 12 ou iii) 42.Si vous souhaitez également supprimer le champ ajouté par
cat -n
pour obtenir les lignes d'origine du fichier, vous pouvez procéder comme suit:la source