Najlepszym narzędziem do nieinteraktywnej edycji plików w miejscu jest ex.
ex -sc '%s/\(\.com\).*/\1/ | x' file.txt
Jeśli używałeś vii kiedykolwiek wpisałeś polecenie zaczynające się od dwukropka :, użyłeś polecenia ex. Oczywiście wiele bardziej zaawansowanych lub „fantazyjnych” poleceń, które można wykonać w ten sposób, są rozszerzeniami Vima (np. :bufdo) I nie są zdefiniowane w specyfikacjach POSIXex , ale specyfikacje te pozwalają na naprawdę zadziwiający stopień mocy i elastyczności w trybie niewizualnym edycja tekstu (interaktywna lub automatyczna).
Powyższe polecenie składa się z kilku części.
-swłącza tryb cichy, aby przygotować się exdo użycia wsadowego. (Pomiń komunikaty wyjściowe i in.)
-cokreśla polecenie do wykonania po file.txtotwarciu pliku ( w tym przypadku) w buforze.
%jest specyfikatorem adresu równoważnym 1,$— oznacza to, że następujące polecenie jest stosowane do wszystkich linii bufora.
sto polecenie zastępcze, które prawdopodobnie już znasz. Jest powszechnie używany vii ma zasadniczo identyczne funkcje jak spoleceniesed , chociaż niektóre zaawansowane funkcje wyrażenia regularnego mogą się różnić w zależności od implementacji. W tym przypadku z „.com” do końca wiersza zastępuje się tylko „.com”.
Pionowy pasek oddziela sekwencyjne polecenia do wykonania. W wielu (większości) eximplementacjach możesz również użyć dodatkowej -copcji, na przykład:
ex -sc '%s/\(\.com\).*/\1/' -c x file.txt
Nie jest to jednak wymagane przez POSIX.
Do xwyjścia polecenia, po zapisaniu zmian w pliku. W przeciwieństwie do tego, wqco oznacza „zapisz i wyjdź”, xzapisuje do pliku tylko wtedy, gdy bufor został edytowany. Dlatego jeśli plik nie zostanie zmieniony, znacznik czasu zostanie zachowany.
.comtylko zamiast usuwać wszystko po pierwszej/postaci i włącznie z nią ? Co jeśli masz adres URL taki jaken.wikipedia.org/wiki/Ubuntuna liście?