Mam taki plik:
other lines . . .
blah blah blah (:34)
Chcę znaleźć występowanie liczb w powyższym pliku. Wymyśliłem:
grep [0-9] filename
Ale to drukuje całość:
blah blah blah (:34)
Raczej chcę tylko 34
. Czy jest na to jakiś sposób?
command-line
bash
text-processing
grep
Mrówki
źródło
źródło
man grep
Odpowiedzi:
Możesz użyć,
grep -E
aby uzyskać dostęp do rozszerzonej składni wyrażeń regularnych (Taki sam jak egrep )Utworzyłem plik testowy z poniższą zawartością:
Teraz, aby zastąpić same liczby z tekstu, którego możesz użyć
będzie wyjście.
W tym przypadku „-o” służy tylko do wyświetlania pasującego segmentu linii, a nie do pełnej zawartości linii.
Kwadratowe nawiasy kwadratowe (np. {I}) wskazują liczbę wystąpień dopasowania. {1,4} wymaga, aby poprzedni znak lub klasa postaci wystąpiły co najmniej raz, ale nie więcej niż cztery razy.
Mam nadzieję że to pomoże
źródło
grep -Eo '[0-9]{1,}' testfile
Można użyć wyrażenia
[:digit:]
nawiasowego RE określonego w sekcji 9.3.5 standardu POSIX , w połączeniu z-o
flagą, aby wydrukować tylko pasujące „słowa”źródło
grep -o
wydrukuje tylko pasującą część linii. W przeciwnym razie grep wydrukuje dowolne linie ze wzorem.źródło
Chciałbym użyć curl, aby uzyskać dostęp do twojego pliku lokalnie lub zdalnie, następnie grep linie z liczbami owiniętymi (:), a następnie odciąć te kawałki i zapisać do pliku
zaakceptowana odpowiedź ignoruje liczby w poprzednich liniach pliku, działa dla przykładowych danych, ale co jeśli plik był zdalny?
Lokalny
W tym przykładzie
output.txt
w Twoim bieżącym folderze zostanie nadpisane, do którego uzyskujemy dostępinput.txt
z Twojego folderu publicznego.Zdalny
W tym przykładzie
output.txt
w bieżącym folderze będą nadpisywane, mamy dostępinput.txt
odhttps://yoursite.com/Public/
.źródło
curl
gdy prostecat
?