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ą:
>cat testfile
this is some text
with some random lines
again some text
ok now going for numbers (:32)
ok now going for numbers (:12)
ok now going for numbers (:132)
ok now going for numbers (:1324)
Teraz, aby zastąpić same liczby z tekstu, którego możesz użyć
>grep -Eo '[0-9]{1,4}' testfile
32
12
132
1324
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
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”
$ grep -o '[[:digit:]]*' <<< $'No number in this line\nbut 123 here'
123
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
curl file:///home/$USER/Public/input.txt | grep -o '(:.*)' | cut -d ":" -f 2 | cut -d ")" -f 1 > output.txt
W tym przykładzie output.txt
w Twoim bieżącym folderze zostanie nadpisane, do którego uzyskujemy dostęp input.txt
z Twojego folderu publicznego.
Zdalny
curl https://yoursite.com/Public/input.txt | grep -o '(:.*)' | cut -d ":" -f 2 | cut -d ")" -f 1 > output.txt
W tym przykładzie output.txt
w bieżącym folderze będą nadpisywane, mamy dostęp input.txt
od https://yoursite.com/Public/
.
curl
gdy proste cat
?
man grep