cómo editar una línea usando sed o awk en Linux que contiene un cierto número o cadena
Frecuentes
Visto 628 veces
0
Mi archivo Stress.k es el siguiente
180.4430
*INCLUDE
$# filename
*STRESS_INITIALIZATION
*END
Quiero que sea como
180.4430
*INCLUDE
$# filename
*STRESS_INITIALIZATION
*/home/hassan/534.k
*END
para eso usé sed de la siguiente manera
a="$(cat flow.k)"
sed -i -e '/*END/i \*/home/hassan/$a.k ' Stress.k
sin que importe flow.k
tiene un solo número como 534.k o algo así. Aquí se sed poner la linea antes END
pero no toma el valor de a , sino que pone el mismo alfabeto y no entiende $a.k
.
Dígame también cómo eliminar la penúltima línea o la línea con una cadena hassan, por ejemplo, para poder eliminarla primero y luego, para el siguiente paso, la uso para ingresar la línea requerida.
si es posible, sugiera también las alternativas.
saludos cordiales
2 Respuestas
1
bash las variables solo se reemplazan cuando están entre comillas dobles, por ejemplo
sed -i -e "/*END/i \*/home/hassan/$a.k " Stress.k
Respondido el 12 de junio de 12 a las 16:06
0
Use comillas dobles para permitir que la variable se expanda.
sed -i -e "/*END/i \*/home/hassan/$a.k " Stress.k
Para reemplazar la cadena, hágalo como lee en el archivo:
a=$(sed 's/534/100/' flow.k)
Para eliminar una línea:
sed '/hassan/d' inputfile
Para leer un archivo en la secuencia después de la línea actual:
sed '/foo/r filename' inputfile
Respondido el 12 de junio de 12 a las 17:06
El resto del trabajo, como analizar desde otro archivo, lo puedo hacer... entonces, cómo reemplazar 534.k directamente con otro valor de otro archivo en el siguiente paso. esto completaría la respuesta ... como flow.k tiene solo 100, entonces, ¿cómo puedo usar esos 100 y cambiarlos a 100.k en mi archivo Stress.k? Saludos - hamad khan