Van-e egyszerű módja annak, hogy visszhangozhassak egy fájlt, kihagyva az első és az utolsó sort? Néztem a head csövezést a tail ba, de azok számára úgy tűnik, hogy kezdettől fogva tudnom kellene a teljes vonalakat. Néztem a split -et is, de ezzel sem látom a módját. 
Válasz
 Csak sed vel, csövek nélkül: 
sed "1d;$d" file.txt MEGJEGYZÉS
-  1jelentése első sor
-  djelentése törlés
-  ;2 parancs elválasztója
-  $jelentése utolsó sor
Válasz
 Nem kell előre tudni a sorok számát. A tail és a head eltolást vehet fel a fájl elejétől vagy végétől. 
Ez a cső a fájl második sora (az első sor kihagyása) és az utolsó előtt áll meg (az utolsó sor kihagyása). Ha az elején vagy a végén egynél több sort szeretne kihagyni, állítsa be ennek megfelelően a számokat.
tail -n +2 file.txt | head -n -1 fordítva, természetesen ugyanúgy működik:
head -n -1 file.txt | tail -n +2 Megjegyzések
Válasz
 A awk: 
awk "NR>2 {print t} {t=$0}"  A sed másik módja is: 
sed "1d;x" file.txt  x haladó sed parancs, az aktuális sort átkapcsolja a előző: az áram megy a pufferbe és az előzőbe s a képernyőre megy, és így tovább, miközben sed soronként feldolgozza a folyamot (ezért az első sor üres lesz). 
 awk megoldás minden lépésnél (sornál) az aktuális sort beteszi a változóba, és csak a második sor áthaladása után kezdi el kinyomtatni. Így a képernyőn a másodperctől az utolsóig egy sima sorozatot kaptunk. Az utolsó sort kihagyjuk, mivel a sor a változóban van, és csak a következő lépésre kell kinyomtatni, de az összes lépés már elfogyott, és soha nem látjuk a sort a képernyőn. 
 Ugyanez az ötlet a perl: 
 perl -ne "print $t if $.>2 ; $t=$_" file.txt  
 $. a sorszámot, az $_ az aktuális sort jelenti. 
 perl -n a while(<..>) {..} struktúra és a -e az inline parancsfájloké. 
Válasz
Mac felhasználók számára:
 Mac rendszeren head -n -1 nem működik. Ehelyett fordítsa meg a fájlt, vágja le az első sort, majd fordítsa vissza: 
tail -r file.txt | tail -n +2 | tail -r Magyarázat:
- 
tail -r: megfordítja a beviteli sorok sorrendjét
- 
tail -n +2: kinyomtatja az összes l-t ines a bevitel második sorától kezdődően
Megjegyzések
-  Meghiúsulna a head: illegal line count -- -1hogy pontos legyek.
Válasz
A pythonban ezt szeretném csinálni.
#!/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]))  Illessze be a fenti kódot egy fájlba, és nevezze el script.py néven. Futtassa a szkriptet az ellenőrizni kívánt fájlhoz. 
python3 script.py /path/to/the/file Példa:
$ cat file foo apple banana bar $ python3 script.py file apple banana Megjegyzések
-  ''.join(list(open("/path/to/file"))[1:-1]): Úgy tűnik, hogy ez egyszerűbb megoldás 🙂 És ha közvetlenül a parancssorban kell végrehajtani, akkor megpróbálhatja:python -c 'print("".join(list(open("/path/to/file"))[1:-1]))'
head -n -1eltávolítja az.txtfájlom első ÉS utolsó sorát az Ubuntu 14.04.2LTS-en.head -n -1azt mondja, hogyhead: illegal line count -- -1head -n -1működik GNU coreutils, lehet, hogy a MacOS-nak van valami BSD-változata?