Eu preciso excluir o texto de uma linha antes do delimitador.
Por exemplo:
(123434): hello::{apple,orange,mango}.
Eu preciso excluir o texto antes da primeira :
. ie (123434)
.
Existe algum comando no linux para executar esta tarefa?
Eu preciso excluir o texto de uma linha antes do delimitador.
Por exemplo:
(123434): hello::{apple,orange,mango}.
Eu preciso excluir o texto antes da primeira :
. ie (123434)
.
Existe algum comando no linux para executar esta tarefa?
Respostas:
Este sed
comando deve fazer o truque. O seguinte comando substituirá o arquivo:
sed -i 's/^[^:]*:/:/' file
Para imprimir apenas a saída, remova a -i
bandeira. Para colocar a saída em um novo arquivo, remova o -i
sinalizador e redirecione a saída:
sed 's/^[^:]*:/:/' file > new_file
Você pode fazer isso com uma instrução Bash bastante simples :
mytext="(123434): hello::{apple,orange,mango}."
echo ${mytext#*)}
Isso será impresso : hello::{apple,orange,mango}.
. Você pode cortar prefixos e sufixos de maneira semelhante. Além disso, as definições de prefixo e sufixo podem conter caracteres curinga.
Recortar prefixo - até a primeira correspondência curinga de prefixo: ${variable#prefix}
Recortar prefixo - até a última correspondência de curinga do prefixo: ${variable##prefix}
Recortar sufixo - até a primeira correspondência de curinga do sufixo: ${variable%suffix}
Recortar sufixo - até a última correspondência de curinga do sufixo: ${variable%%suffix}
Pode parecer pouco claro à primeira vista, veja o seguinte exemplo:
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
No último exemplo, o padrão não corresponde, então nada é cortado.
echo ${mytext#*:}:
. Isso manipulará corretamente linhas como (123)(434): hello::{apple,orange,mango}.
e 123434: hello::{apple,orange,mango}
.
sed
ouawk