Mam plik tekstowy. Zadanie - pobierz pierwszy i ostatni wiersz z pliku po
$ cat file | grep -E "1|2|3|4" | commandtoprint
$ cat file
1
2
3
4
5
Potrzebujesz tego bez wyjścia kota (tylko 1 i 5).
~$ cat file | tee >(head -n 1) >(wc -l)
1
2
3
4
5
5
1
Może istnieje awk i krótsze rozwiązanie ...
wc -l
nie ma nic wspólnego z wypisaniem ostatniego wiersza pliku.Odpowiedzi:
Rozwiązanie sed :
Podczas czytania z
stdin
if wyglądałby tak (na przykładps -ef
):Rozwiązanie głowa i ogon :
Gdy dane pochodzą z polecenia (
ps -ef
):awk Rozwiązanie:
A także potokowy przykład z
ps -ef
:źródło
(head -n1 file;tail -n1 file)
Mam bardzo duże polecenie i potok jako ostatni symbol. Taki| sed '1p;$!d'
krótszy.head && tail
naprawdę działa dla ciebie?seq 10 | (head -n1 && tail -n1)
drukuje1
tylko.-e 1b
- w pierwszym wierszu przejdź do końca skryptu sed, w którym to momencie następuje niejawne „drukowanie”. Jeśli wejście ma tylko jedną linię, sed kończy się. W przeciwnym razie dla wszystkich wierszy oprócz ostatniego usuń. W ostatnim wierszu niejawne „drukowanie” zdarza się ponownie.sed
4.2.2. Twoje zdrowie.sed -n '1p;$p' file.txt
wypisze pierwszy i ostatni wiersz pliku.txt.źródło
sed -e 1b -e '$!d'
jeśli tego nie chcesz.Zabawny czysty Bash ≥4 sposób:
Następnie otrzymasz tablicę
ary
z pierwszym polem (tj. Z indeksem0
) będącym pierwszą liniąfile
, a ostatnim polem jest ostatnia liniafile
. Wywołanie zwrotnecb
(opcja jeśli chcesz slurp wszystkie wiersze w tablicy) unsets wszystkie linie pośrednie, tak aby nie zaśmiecać pamięć. Jako darmowy produkt uboczny będziesz mieć także liczbę wierszy w pliku (jako ostatni indeks tablicy + 1).Próbny:
źródło
Z
sed
możnad
suĹ linie jeśli NIE1
st jeden I NIE La$
jeden t.Służy
!
doNOT
(negowania) warunku iX{Y..}
konstrukcji do łączenia warunkówX
ANDY
:lub możesz użyć zakresu - od
2
nd do la$
t - i usunąć wszystkie linie z tego zakresu oprócz linii la$
t:źródło
Za pomocą Perla:
Powyżej drukuje pierwszy element na wyjściu
seq 10
przezif 1..1
, natomiastor eof
drukuje również ostatni element.źródło
/etc
abrt
iyum.repos.d
trzeba zrobić to pytanie?Bez kota:
lub
źródło
źródło