Si potrebbe provare a utilizzare qualcosa come:.
sed 's/$/:80/' ips.txt > new-ips.txt
** A condizione che il formato del file è proprio come hai descritto nella sua domanda *
Le partite comando s///
sostituzione (trova) la fine di ogni riga nel file (utilizzando il carattere $
) e quindi aggiunge (sostituisce) il :80
alla fine di ogni riga. Il file ips.txt
è il file di input e ... new-ips.txt
è il file appena creato (il risultato finale delle modifiche.)
Inoltre, se si dispone di una lista di numeri IP che capita di avere numeri di porta attaccati già, (come notato da Vlad e come dato da aragaer,) si potrebbe provare a utilizzare qualcosa di simile:
sed '/:[0-9]*$/ ! s/$/:80/' ips.txt > new-ips.txt
Così, per esempio, se il file di input sembrava qualcosa di simile (notare il :80
):
127.0.0.1
128.0.0.0:80
121.121.33.111
il risultato finale sarebbe simile a questa:
127.0.0.1:80
128.0.0.0:80
121.121.33.111:80
Aggiungerà ': 80' a una riga in cui': 80' è già stato aggiunto? – Vlad
@Vlad Sì; ma secondo l'OP esempio di input in ingresso ... non ci dovrebbero essere numeri di porta nella lista degli IP. :) Anche se ci fosse ... l'OP potrebbe semplicemente eseguire un altro sed 's ///' in precedenza per estrarre qualsiasi numero di porta alla fine di ogni riga. – summea
Ok, basta chiarire ... Forse dovrebbe esserci una condizione per escludere le linee in cui esiste già una porta. – Vlad