Voici mon exemple de fichier
user@linux:~$ cat file.txt
Line 1
Line 2
Line 3
Line 4
Line 5
user@linux:~$
Je peux imprimer la ligne 2-4 avec grep -A2 'e 2' file.txt
user@linux:~$ grep -A2 'e 2' file.txt
Line 2
Line 3
Line 4
user@linux:~$
Je peux également imprimer le numéro de ligne aussi avec grep -n
user@linux:~$ grep -nA2 'e 2' file.txt
2:Line 2
3-Line 3
4-Line 4
user@linux:~$
En outre, la même chose peut être accomplie avec sed -n 2,4p file.txt
user@linux:~$ sed -n 2,4p file.txt
Line 2
Line 3
Line 4
user@linux:~$
Mais je ne sais pas comment imprimer le numéro de ligne avec sed
Serait-il possible d'imprimer le numéro de ligne avec sed
?
Awk:
awk 'NR==2,NR==4{print NR" "$0}' file.txt
Double SED:
sed '2,4!d;=' file.txt | sed 'N;s/\n/ /'
Glen Jackmann 's SED et pâte:
sed '2,4!d;=' file.txt | paste -d: - -
Perl:
Perl -ne 'print "$. $_" if ($.>=2 and $.<=4)' file.txt
Équivalent Perl:
Perl -ne 'print "$. $_" if $.==2..$.==4' file.txt
CAT et SED:
cat -n file.txt | sed -n '2,4p'
Voir aussi cela Réponse à une question similaire.
Un peu de explication:
sed -n '2,4p'
et sed '2,4!d;='
Faites la même chose: le premier n'imprime que des lignes entre le deuxième et le quatrième (inclus), ce dernier "supprime" toutes les lignes, à l'exception de celles-ci.
sed =
imprime le numéro de ligne suivi d'une nouvelle ligne. Voir le Manuel .
cat -n
Dans le dernier exemple, vous pouvez être remplacé par nl
ou grep -n ''
.
J'ai fait en dessous mentionné 2 méthodes
Méthode1
awk '/2/{x=NR+2}(NR<=x){print NR"-"$0 }' filename
commander
2-Line 2
3-Line 3
4-Line 4
Méthode2
sed -n '{;=;p}' filename| sed "N;s/\n/ /g"| sed -n '/2/,+2p'
sortir
2 Line 2
3 Line 3
4 Line 4