Quale comando di shell unix posso utilizzare per ottenere le linee x (ad esempio da 10) a y (ad es. 15) da un file. grep
non sembra aiutare e salvo fare un ciclo for non riesco a pensare ad altro.Shell: ottiene le linee da x a y del file
risposta
È possibile utilizzare sed
:
sed -n '5,10p' filename
per stampare linee da 5 a 10.
grazie! funziona perfettamente! – navige
È possibile utilizzare head
e tail
, per esempio
head -n 15 $file | tail -n 5
Buona soluzione anche! – navige
awk:
awk 'NR>=10 and NR<=15' your_file
Perl:
perl -lne 'print if($.>=10 && $.<=15)' your_file
testato sotto:
> cat temp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
> nawk 'NR>=10&&NR<=15' temp
10
11
12
13
14
15
> perl -lne 'print if($.>=10&&$.<=15)' temp
10
11
12
13
14
15
>
Mi piace molto la soluzione di awk, grazie! Peccato che non ho mai imparato perl, anche bello. – navige
Per i file più grandi:
sed '10,15! d;15q' file
Puoi spiegare, per favore? – navige
! D cancella tutte le linee non comprese tra 10 e 15. 15q fa sed per uscire dall'elaborazione alla 15 ° linea invece di elaborare fino all'ultima riga. –
Possibile duplicato di: http://unix.stackexchange.com/questions/47407/cat-line-x-to-line-y-on-a-huge- file – h2ooooooo
http://theunixshell.blogspot.com/2013/06/print-range-of-lines-in-perl-based-upon.html – Vijay
Sì! molto un duplicato, mi dispiace! sebbene la soluzione KingsIndian non possa essere trovata lì facilmente. – navige