Risposte:
Solo con sed, senza tubi:
sed '1d;$d' file.txt
NOTA
1significa prima rigadsignifica cancellare; è il separatore per 2 comandi$significa l' ultima rigaNon è necessario conoscere in anticipo il numero di righe. taile headpuò prendere un offset rispettivamente dall'inizio o dalla fine del file.
Questa pipe inizia dalla seconda riga del file (salta la prima riga) e si ferma all'ultima ma una (salta la riga finale). Per saltare più di una riga all'inizio o alla fine, regolare i numeri di conseguenza.
tail -n +2 file.txt | head -n -1
facendo il contrario, funziona allo stesso modo, ovviamente:
head -n -1 file.txt | tail -n +2
Ecco come farlo con awk:
awk 'NR>2 {print t} {t=$0}'
Anche un altro modo per sed:
sed '1d;x' file.txt
xè un sedcomando avanzato , cambia la linea corrente con la precedente: la corrente va nel buffer e la precedente passa allo schermo e così via durante l' sedelaborazione del flusso riga per riga (ecco perché la prima riga sarà vuota).
awksoluzione su ogni passaggio (riga) inserisce la riga corrente nella variabile e inizia a stamparla solo dopo il passaggio della seconda riga. Quindi, abbiamo ottenuto una sequenza di linee merda sullo schermo dalla seconda all'ultima ma una. L'ultima riga viene omessa perché la riga si trova nella variabile e deve essere stampata solo nel passaggio successivo, ma tutti i passaggi sono già terminati e la riga non viene mai visualizzata sullo schermo.
Stessa idea in perl:
perl -ne 'print $t if $.>2 ; $t=$_' file.txt
$.indica il numero di riga e la $_ riga corrente.
perl -nè una scorciatoia per la while(<..>) {..}struttura ed -eè per lo script in linea.
In Python vorrei fare così.
#!/usr/bin/python3
import re
import sys
file = sys.argv[1]
with open(file, 'r') as f:
L = []
for line in f:
line = re.sub(r'\n', r'', line)
L.append(line)
print('\n'.join(L[1:-1]))
Incolla il codice sopra in un file e chiamalo come script.py. Esegui lo script sul file con cui desideri verificare.
python3 script.py /path/to/the/file
Esempio:
$ cat file
foo
apple
banana
bar
$ python3 script.py file
apple
banana
Per utenti Mac:
Su Mac, head -n -1non funziona. Invece, invertire il file, tagliare la prima riga, quindi invertire indietro:
tail -r file.txt | tail -n +2 | tail -r
Spiegazione:
tail -r : inverte l'ordine delle linee nel suo input
tail -n +2 : stampa tutte le righe a partire dalla seconda riga nel suo input
head -n -1rimuove la prima E l'ultima riga del mio.txtfile, su Ubuntu 14.04.2LTS.