Można spróbować użyć coś takiego:.
sed 's/$/:80/' ips.txt > new-ips.txt
** Dołączona że format pliku jest tak jak opisali w swoim pytaniu *
Mecze dowodzenia s///
podstawienie (znajdzie) koniec każdej linii w pliku (przy użyciu znaku $
), a następnie dołącza (zamienia) :80
na końcu każdej linii. Plik ips.txt
jest plik wejściowy ... i new-ips.txt
to nowo utworzony plik (ostateczny wynik zmian.)
Ponadto, jeśli masz listę numerów IP, które zdarzy się, że numery portów dołączone już (jak zauważył Vlad i jak podane przez aragaer,) można spróbować użyć coś takiego:
sed '/:[0-9]*$/ ! s/$/:80/' ips.txt > new-ips.txt
tak więc, na przykład, jeśli plik wejściowy wyglądał mniej więcej tak to (uwaga :80
):
127.0.0.1
128.0.0.0:80
121.121.33.111
Wynik końcowy będzie wyglądać mniej więcej tak:
127.0.0.1:80
128.0.0.0:80
121.121.33.111:80
Czy będzie dołączać ': 80' do wiersza, w którym': 80' jest już dołączony? – Vlad
@Vlad Tak; ale zgodnie z podanymi przykładami programów wejściowych ... nie powinno być żadnych numerów portów na liście adresów IP. :) Nawet gdyby istniało ... OP mógł po prostu uruchomić inny sed 's ///' wcześniej, aby wyjąć numery portów na końcu każdej linii. – summea
Ok, tylko wyjaśnienie ... Może powinien istnieć warunek wykluczenia linii, w których port już istnieje. – Vlad