No, non c'è, i file non sono indirizzabili in linea.
Non esiste un modo a tempo costante per trovare l'inizio della riga n in un file di testo. Devi eseguire lo streaming del file e contare le nuove righe.
Usa lo strumento più semplice/veloce che hai per fare il lavoro. Per me, usando head
rende molto ha più senso di grep
, poiché quest'ultimo è molto più complicato. Non sto dicendo "grep
è lento", in realtà non lo è, ma sarei sorpreso se fosse più veloce di head
per questo caso. Sarebbe un bug in head
, sostanzialmente.
con GNU-grep potresti semplicemente dire
grep --context=10 ...
# print line number 52
sed -n '52p' # method 1
sed '52!d' # method 2
sed '52q;d' # method 3, efficient on large files
metodo 3 efficiente su file di grandi dimensioni
modo più rapido per visualizzare righe specifiche
Ho trovato altre due soluzioni se conosci il numero di riga ma nient'altro (nessun grep possibile):
Supponendo che tu abbia bisogno delle righe da 20 a 40,
sed -n '20,40p;41q' file_name
o
awk 'FNR>=20 && FNR<=40' file_name
Quando si utilizza sed
è più efficiente terminare l'elaborazione dopo aver stampato l'ultima riga piuttosto che continuare l'elaborazione fino alla fine del file. Ciò è particolarmente importante nel caso di file di grandi dimensioni e linee di stampa all'inizio. Per fare ciò, il sed
Il comando precedente introduce l'istruzione 41q
per interrompere l'elaborazione dopo la riga 41 perché nell'esempio siamo interessati solo alle righe 20-40. Dovrai cambiare il 41 in qualunque sia l'ultima riga che ti interessa, più uno.