una sustituir salto lineas linea insertar eliminar caracter buscar añadir sed

sustituir - sed shell



agregar texto al final de cada línea (4)

Podría intentar usar algo como:

sed ''s/$/:80/'' ips.txt > new-ips.txt

** Siempre que su formato de archivo sea tal como lo describió en su pregunta. *

El comando s/// substituye ( encuentra ) el final de cada línea en su archivo (usando el carácter $ ) y luego agrega ( reemplaza ) el :80 al final de cada línea. El archivo ips.txt es su archivo de entrada ... y new-ips.txt es su archivo recién creado ( el resultado final de sus cambios ) .

Además, si tiene una lista de números de IP que tienen números de puertos adjuntos, (como notó Vlad y según lo indicado por aragaer ), podría intentar usar algo como:

sed ''/:[0-9]*$/ ! s/$/:80/'' ips.txt > new-ips.txt

Entonces, por ejemplo, si su archivo de entrada se veía algo así (observe el :80 ) :

127.0.0.1 128.0.0.0:80 121.121.33.111

El resultado final se vería así:

127.0.0.1:80 128.0.0.0:80 121.121.33.111:80

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.


Si desea agregar texto al final de cada línea in situ (en el mismo archivo), puede usar el parámetro -i , por ejemplo:

sed -i''.bak'' ''s/$/:80/'' foo.txt

Sin embargo, la opción -i es una extensión de Unix no estándar y es posible que no esté disponible en todos los sistemas operativos.

Así que puedes considerar usar ex (que es equivalente a vi -e / vim -e ):

ex +"%s/$/:80/g" -cwq foo.txt

que agregará :80 a cada línea, pero a veces puede agregarla 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:

ex +"g/[0-9]/s/$/:80/g" -cwq foo.txt

Si el archivo tiene un formato más complejo, considere usar expresiones regulares correctas, en lugar de [0-9] .


Usando un editor de texto, verifique que ^M (control-M, o retorno de carro) al final de cada línea. Tendrá que eliminarlos primero y luego agregar el texto adicional al final de la línea.

sed -i ''s|^M||g'' ips.txt sed -i ''s|$|:80|g'' ips.txt


sed ''s/.*/&:80/'' abcd.txt >abcde.txt