Tente:
$ echo "IBM, Inc.:APP-VM-Core:4.4.2.0:04," | sed '/^ *IBM/s/,//'
IBM Inc.:APP-VM-Core:4.4.2.0:04,
ou:
$ echo "IBM, Inc.:APP-VM-Core:4.4.2.0:04," | sed 's/^\( *IBM\),//'
IBM Inc.:APP-VM-Core:4.4.2.0:04,
Como removo o caractere ,
após uma palavra específica?
Por exemplo, desejo excluir o caractere ,
após a palavra IBM
IBM, Inc.:APP-VM-Core:4.4.2.0:04,
os resultados esperados devem ser
IBM Inc.:APP-VM-Core:4.4.2.0:04,
Enquanto isso, faço o seguinte
echo “IBM, Inc.:APP-VM-Core:4.4.2.0:04,” | sed s'/,//'
mas o problema é que ele exclui todos os caracteres ,
, independentemente da primeira palavra antes do ,
. No meu caso, quero excluir o ,
somente após IBM
.
Exemplo:
echo "APPLE, Inc.:APP-VM-Core:4.4.2.0:04,"| sed s'/,//'
APPLE Inc.:APP-VM-Core:4.4.2.0:04,
mas deve ser como
APPLE, Inc.:APP-VM-Core:4.4.2.0:04,
Se você estiver tentando modificar um arquivo, prefira usar ex
ou ed
, mas definitivamente não sed
. Por que não sed
?
sed
é um S
tream ED
itor e você modificaria os dados provenientes de um fluxo com ele.
Usando ex
, você pode fazer o seguinte
ex -sc '%s/IBM,/IBM/g|x' file
wheren file
é o nome do seu arquivo.
Como alternativa. Se você quiser remover as guias principais espaços ou , precisará de mais de ^ *
. Por exemplo. A solução estaria usando awk
da seguinte forma:
awk '{sub(/^[ \t]+IBM,/,"IBM");};1' input_file > output_file
ou
awk '{sub(/^[[:blank:]]*IBM,/,"IBM");};1' input_file > output_file
Preste atenção em você. ^ *
não poderá detectar as guias .
Você também pode usar ex
conforme explicado anteriormente, mas incluindo agora a expressão regular para corresponder apenas à linha que começa com espaços e inclui o padrão IBM
ex -sc '%s/^[[:blank:]]*IBM,/IBM/g|x' input_file
Tags text-processing