Czy istnieje sposób pod linuxem/terminalem do liczenia, ile razy znak f występuje w zwykłym pliku tekstowym?Liczba wystąpień znaku w pliku tekstowym
Odpowiedz
Co powiesz na to? s:
fgrep -o f <file> | wc -l
Uwaga: Oprócz łatwiejszego zapamiętywania/duplikowania i dostosowywania, jest to około trzy razy (przepraszam, edytuj! spartaczył pierwszy test) szybciej niż odpowiedź Vereba.
Ten nie działa, jeśli potrzebujesz policzyć znaki' \ r' lub '\ n'; odpowiedź 'tr -cd f' działa na to. – bjnord
Aby zliczyć kilka znaków, np. 'a',' b' i 'c', użyj' egrep': 'egrep -o 'a | b | c'
Uważaj też, aby NIE używać 'wc -c' jak w' tr' answer: ponieważ 'grep' wyświetla linię po linii,' wc' zliczałby koniec linii jako znaki (stąd podwojenie liczby znaków). –
echo $(cat <file> | wc -c) - $(cat <file> | tr -d 'A' | wc -c) | bc
gdzie A jest postać
Czas tego polecenia z pliku 4,9 MB i 1100000 wystąpień poszukiwanego Charakter:
real 0m0.168s
user 0m0.059s
sys 0m0.115s
To zajmuje około jednej trzeciej szybciej, jeśli usuniesz niepotrzebne 'cat's, podając nazwę pliku jako argument dla' wc' i 'tr'. – Cascabel
Niestety tr działa tylko na standardowym wejściu – Vereb
Jeśli naprawdę chcesz zoptymalizować, odczytuje plik tylko raz: echo $ (stat -c% s
tr -d '\n' < file | sed 's/A/A\n/g' | wc -l
Wymiana dwóch wystąpienia "A" z twoją postacią i "plik" z twoim plikiem wejściowym.
tr -d '\n' < file
: usuwa znaki nowej liniised 's/A/A\n/g
: dodaje nowej linii po każdym wystąpieniu "A"wc -l
: zlicza liczbę wierszy
Przykład:
$ cat file
abcdefgabcdefgababababbbba
1234gabca
$ tr -d '\n' < file | sed 's/a/a\n/g' | wc -l
9
Jeśli wszystko, co trzeba zrobić, to policzyć liczbę wierszy zawierających swoją postać, to będzie działać:
grep -c 'f' myfile
Jednak liczy się wiele wystąpień „f” na tej samej linii, co w jednym meczu.
nawet szybciej:
tr -cd f < file | wc -c
Czas tego polecenia z pliku o 4,9 MB i 1100000 wystąpień poszukiwanego Charakter:
real 0m0.089s
user 0m0.057s
sys 0m0.027s
czas na Vereb odpowiedzieć echo
, cat
, tr
i bc
dla tego samego pliku:
real 0m0.168s
user 0m0.059s
sys 0m0.115s
Czas Rob HRUŠKA odpowiedzieć tr
, sed
i wc
dla tego samego pliku:
real 0m0.465s
user 0m0.411s
sys 0m0.080s
Czas na Jefromi odpowiedzieć fgrep
i wc
dla tego samego pliku:
real 0m0.522s
user 0m0.477s
sys 0m0.023s
Aby zliczyć kilka znaków, np. 'a',' b' i 'c':' tr -cd abc
Uratowałeś mnie znajdując właściwą składnię dla 'tr'! – Pysis
- 1. Liczba wystąpień znaku w NSString
- 2. Liczba wystąpień tokena w pliku
- 3. Liczba wystąpień znaku w ciągu znaków przy użyciu Bash
- 4. Liczba wystąpień słów w R
- 5. Liczba wystąpień wartości
- 6. Lista wszystkich słów w pliku tekstowym z liczbą wystąpień?
- 7. liczba Liczba wystąpień dla każdej unikatowej wartości
- 8. Regex: nieparzysta liczba wystąpień char
- 9. Zyskaj listę wystąpień + liczba w modelu Django?
- 10. Liczba wystąpień elementu w elemencie JSON
- 11. Swift :: Liczba wystąpień podciągu w łańcuchu
- 12. C# Dołącz x wystąpień znaku do ciągu znaków
- 13. Indeks powrotu wszystkich wystąpień znaku w ciągu w rubi
- 14. Jak liczyć liczbę wystąpień pewnego znaku w ciągu znaków?
- 15. Jak liczyć liczbę wystąpień znaku w wartości varchar Oracle?
- 16. 1-bajtowa liczba całkowita bez znaku C++
- 17. Odejmij Signed całkowitą liczba całkowita bez znaku
- 18. Policz wiersze w pliku tekstowym
- 19. Usuwanie znaku BOM w pliku
- 20. Używanie funkcji Liczba w celu znalezienia liczby wystąpień
- 21. Liczba wystąpień niektórych słów w ramce danych pandy
- 22. Oracle/SQL - liczba wystąpień wartości w pojedynczej kolumnie
- 23. Jak szybciej iterować w tym pliku tekstowym?
- 24. Usuwanie ostatnich dwóch znaków z każdej linii w pliku tekstowym
- 25. Bash Script: Liczba unikatowych linii w pliku
- 26. Liczba wierszy w pliku CSV
- 27. liczba stron w pliku PDF
- 28. RegEx - Weź wszystkie znaki numeryczne następujące po znaku tekstowym
- 29. Jak czytać z pliku tekstowego, znak po znaku w C++
- 30. Pierwsze dwa ostatnie wiersze w pliku tekstowym
należy na administratora – Malfist
Technicznie można to uznać za sh/bash/etc. programowania pytanie, więc myślę, że ma ważność w każdym miejscu. –
@Rob Hruska: tak, myślę też, że programowanie basha ... @abrashka: odpowiedź na twoje pierwsze i drugie pytanie brzmi "NIE"! – cupakob