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?
command-line
text-processing
user80538
fonte
fonte
sed
ouawk
Respostas:
Este
sed
comando deve fazer o truque. O seguinte comando substituirá o arquivo: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:fonte
Você pode usar
cut
:fonte
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:
No último exemplo, o padrão não corresponde, então nada é cortado.
fonte
echo ${mytext#*:}:
. Isso manipulará corretamente linhas como(123)(434): hello::{apple,orange,mango}.
e123434: hello::{apple,orange,mango}
.