Necesito eliminar el texto de una línea antes del delimitador.
Por ejemplo:
(123434): hello::{apple,orange,mango}.
Necesito eliminar el texto antes de primero :. es decir (123434).
¿Hay algún comando en Linux para realizar esta tarea?
Necesito eliminar el texto de una línea antes del delimitador.
Por ejemplo:
(123434): hello::{apple,orange,mango}.
Necesito eliminar el texto antes de primero :. es decir (123434).
¿Hay algún comando en Linux para realizar esta tarea?
Respuestas:
Este sedcomando debería hacer el truco. El siguiente comando sobrescribirá el archivo:
sed -i 's/^[^:]*:/:/' file
Para imprimir el resultado, elimine la -ibandera. Para poner la salida en un nuevo archivo, elimine la -ibandera y redirija la salida:
sed 's/^[^:]*:/:/' file > new_file
Puede hacer esto con una instrucción Bash bastante simple :
mytext="(123434): hello::{apple,orange,mango}."
echo ${mytext#*)}
Esto se imprimirá : hello::{apple,orange,mango}.. Puede cortar prefijos y sufijos de manera similar. Además, las definiciones de prefijo y sufijo pueden contener comodines.
Prefijo de corte: hasta la primera coincidencia de comodín de prefijo: ${variable#prefix}
Prefijo de corte: hasta la última coincidencia de comodín de prefijo: ${variable##prefix}
Cortar sufijo: hasta la primera coincidencia de comodín con sufijo: ${variable%suffix}
Cortar sufijo - hasta la última coincidencia de comodín sufijo: ${variable%%suffix}
Puede parecer poco claro a primera vista, vea el siguiente ejemplo:
mytext="xAxBxAxBx"
echo ${mytext#*A} # will print: xBxAxBx
echo ${mytext##*A} # will print: xBx
echo ${mytext%B*} # will print: xAxBxAx
echo ${mytext%%B*} # will print: xAx
echo ${mytext%%C*} # will print: xAxBxAxBx
En el último ejemplo, el patrón no coincide, por lo que no se corta nada.
echo ${mytext#*:}:. Esto manejará correctamente líneas como (123)(434): hello::{apple,orange,mango}.y 123434: hello::{apple,orange,mango}.
sedoawk