Biorąc pod uwagę plik tekstowy o nieznanej długości, jak mogę odczytać na przykład wszystkie oprócz pierwszych 2 wierszy pliku? Wiem, tail
że poda mi ostatnie N wierszy, ale nie wiem, jakie N wyprzedza czas.
Więc jeśli chodzi o plik
AAAA
BBBB
CCCC
DDDD
EEEE
chcę
CCCC
DDDD
EEEE
I do pliku
AAAA
BBBB
CCCC
Dostałbym tylko
CCCC
command-line
scripting
tail
unix-head
Nicholas MT Elliott
źródło
źródło
head
do tego?Zakładając, że twoja wersja taila to obsługuje, możesz określić początek ogona po X liniach. W twoim przypadku zrobiłbyś 2 + 1.
źródło
Proste rozwiązanie wykorzystujące awk:
źródło
{ print }
jest akcją domyślną i można ją pominąć.Spróbuj
sed 1,2d
. W razie potrzeby wymień 2.źródło
tail -n +linecount filename
rozpocznie produkcję na liniilinecount
zfilename
, więctail -n +3 filename
powinni robić, co chcesz.źródło
tail -n +17 filename
. Używam bash / ubuntu LTStail
przyjęły składnię, której użyłem w mojej pierwotnej odpowiedzi, ale teraz trzeba użyć wyraźnej-n
opcji. Odpowiednio zaktualizowałem moją odpowiedź.Użyj tego, zakładając, że pierwsza próbka nazywa się sample1.dat,
tail --lines=3 sample1.dat
co spowoduje wypisanie wszystkich wierszy od trzeciego do ostatniego wiersza.Jeśli chodzi o drugą próbkę, ponownie przypuśćmy, że nazywa się sample2.dat,
tail --lines=-1 sample2.dat
co spowodowałoby wydrukowanie ostatniej linii ...źródło
tail +3 anyfile
daje pożądane wyniki dla przypadku ogólnego, a jednocześnietail --lines=N
wymaga znajomości N z wyprzedzeniem, aby uzyskać pożądany rezultat.tail
... czy to nie powinno być „do dołu”? (Ba-dum TISH! Dziękuję, będę tu cały tydzień ...)Naprawdę nie wiem, jak to zrobić, używając tylko ogona lub głowy, ale za pomocą
wc -l
(liczby linii) i ekspresji basha możesz to osiągnąć.Mam nadzieję że to pomoże.
źródło
używając awk do pobrania wszystkich oprócz ostatnich 2 linii
awk, aby uzyskać wszystkie oprócz pierwszych 2 wierszy
LUB możesz użyć więcej
lub po prostu bash
źródło