Eu tenho um arquivo de texto no Linux onde o conteúdo é como abaixo:
help.helloworld.com:latest.world.com
dev.helloworld.com:latest.world.com
Eu quero obter o conteúdo antes dos dois pontos como abaixo:
help.helloworld.com
dev.helloworld.com
Como posso fazer isso dentro do terminal?
É
cut
para isso que:Você apenas define o delimitador como
:
com-d:
e diz para imprimir apenas o 1º campo (-f1
).Ou uma alternativa:
Isso retorna todos os caracteres que começam no início de cada linha (
^
) que não são dois-pontos ([^:]*
).Definitivamente recomendaria
awk
:Usa
:
como separador de campo e imprime o primeiro campo.resposta atualizada
Considerando o seguinte arquivo
file.txt
:Você pode usar
sed
para remover tudo após os dois pontos:Isso funciona para todos os casos de canto apontados nos comentários - se terminar em dois pontos ou se não houver dois pontos, embora estes não tenham sido mencionados na própria pergunta. Obrigado a @Rakesh Sharma, @mirabilos e @Freddy por seus comentários. Responder a perguntas é uma ótima maneira de aprender.
Você quer dizer assim:
Resultado:
Você pode conseguir isso com o manuseio de strings bash, removendo a correspondência mais longa da string diretamente para cada linha lida assim:
Essa pode ser uma alternativa útil se você estiver analisando o arquivo em um script de shell (embora eu suspeite que o uso de corte possa ser mais eficiente).
No shell POSIX puro sem usar comandos externos, eu faria: