Czy istnieje prosty sposób na echo pliku, pomijając pierwszą i ostatnią linię? Szukałem w rurociągu od head
do tail
, ale dla tych, wydaje się, że muszę znać wszystkich linii od samego początku. Patrzyłem również split
, ale nie widzę też sposobu, aby to zrobić.
text-processing
użytkownik394
źródło
źródło
head -n -1
usuwa pierwszy ORAZ ostatni wiersz mojego.txt
pliku na Ubuntu 14.04.2LTS.Oto jak to zrobić za pomocą
awk
:Również inny sposób na
sed
:x
jestsed
poleceniem zaawansowanym , przełącza bieżącą linię na poprzednią: prąd przechodzi do bufora, a poprzedni przechodzi na ekran itd. podczassed
przetwarzania strumienia linia po linii (dlatego pierwsza linia będzie pusta).awk
rozwiązanie na każdym kroku (linii) umieszcza bieżącą linię w zmiennej i zaczyna ją drukować dopiero po przejściu drugiej linii. Tak więc na ekranie pojawiła się sfałszowana sekwencja linii od drugiej do ostatniej. Ostatni wiersz jest pomijany, ponieważ wiersz znajduje się w zmiennej i powinien zostać wydrukowany tylko w następnym kroku, ale wszystkie kroki już się kończą i nigdy nie widzimy linii na ekranie.Ten sam pomysł w
perl
:$.
oznacza numer linii i$_
bieżącą linię.perl -n
to skrót dowhile(<..>) {..}
struktury i-e
do wbudowanego skryptu.źródło
W Pythonie zrobiłbym tak.
Wklej powyższy kod do pliku i nazwij go jako
script.py
. Uruchom skrypt dla pliku, który chcesz sprawdzić.Przykład:
źródło
Użytkownicy komputerów Mac:
Na komputerze Mac
head -n -1
nie działa. Zamiast tego odwróć plik, odetnij pierwszy wiersz, a następnie cofnij:Wyjaśnienie:
tail -r
: odwraca kolejność linii na wejściutail -n +2
: drukuje wszystkie linie zaczynające się od drugiej linii na wejściuźródło