Estoy en la línea de comandos de Linux y tengo un archivo con
127.0.0.1
128.0.0.0
121.121.33.111
yo quiero
127.0.0.1:80
128.0.0.0:80
121.121.33.111:80
Recuerdo que mis colegas estaban usando sed para eso, pero después de leer el manual de sed todavía no está claro cómo hacerlo en la línea de comandos.

Respuestas:
Puedes intentar usar algo como:
Siempre que su formato de archivo sea el que ha descrito en su pregunta.
El
s///comando de sustitución coincide ( encuentra ) el final de cada línea en su archivo (usando el$carácter) y luego agrega ( reemplaza ) el:80al final de cada línea. Elips.txtarchivo es su archivo de entrada ... ynew-ips.txtes su archivo recién creado ( el resultado final de sus cambios ) .Además, si tiene una lista de números de IP que ya tienen números de puerto adjuntos (como lo señaló Vlad y lo proporcionó aragaer ), podría intentar usar algo como:
Entonces, por ejemplo, si su archivo de entrada se veía así (tenga en cuenta
:80) :El resultado final se vería así:
fuente
sed '/:[0-9]*$/ ! s/$/:80/':80se agregará al principio de la siguiente línea. Usedos2unixprimero en el archivo si es necesario.-nnecesario? probablemente no para la mayoría de los usuarios.Versión concisa del comando sed :
Explicación:
seds tream ed Itor-ii n-place (editar archivo en su lugar)ss comando ubstitution/replacement_from_reg_exp/replacement_to_text/declaración$coincide con el final de la línea ( replacement_from_reg_exp ):80texto que desea agregar al final de cada línea ( reemplazo_a_texto )file.txtel nombre del archivofuente
fuente
Si desea agregar texto al final de cada línea en el lugar (en el mismo archivo), puede usar el
-iparámetro, por ejemplo:Sin embargo, la
-iopción es una extensión Unix no estándar y puede que no esté disponible en todos los sistemas operativos.Entonces puede considerar usar
ex(que es equivalente avi -e/vim -e):que se agregará
:80a cada línea, pero a veces puede agregarlo a líneas en blanco.Entonces, un mejor método es verificar si la línea realmente contiene algún número y luego agregarlo, por ejemplo:
Si el archivo tiene un formato más complejo, considere usar expresiones regulares adecuadas, en lugar de
[0-9].fuente
Con un editor de texto, busque
^M(control-M o retorno de carro) al final de cada línea. Primero deberá eliminarlos y luego agregar el texto adicional al final de la línea.fuente
También puede lograr esto utilizando la técnica de referencia inversa.
También puedes usar con awk como este
fuente
sed -i 's / $ /, / g' foo.txt
Hago esto con bastante frecuencia para agregar una coma al final de una salida para poder copiarla y pegarla fácilmente en una matriz de Python (o su idioma favorito)
fuente