você pode usar:
's/.db$//'
como alternativa, você pode usar:
's/...$//'
para remover os 3 últimos caracteres e
's/\.[^\.]*$//'
para remover tudo depois do último ponto
Eu tenho o problema de extrair a quantidade x de caracteres da string e tenho a dificuldade de aumentar a capacidade da expressão.
Eu tentei usar o comando sed.
Se eu tenho a string example.com.db eu preciso manter "example.com", para isso eu uso
sed 's/\.db//g'
Como mudar a expressão para que eu possa usar esse tipo de arquivo também example.db.db.com.db
.
neste caso, o resultado final que eu preciso é de example.db.db.com
você pode usar:
's/.db$//'
como alternativa, você pode usar:
's/...$//'
para remover os 3 últimos caracteres e
's/\.[^\.]*$//'
para remover tudo depois do último ponto
Você estava perto, use a sintaxe Regex $
para indicar o fim da linha, e também não é necessário o modificador global ( g
), já que você está tentando encontrar apenas uma correspondência:
sed 's/\.db$//' file.txt
Exemplo:
$ sed 's/\.db$//' <<<'example.db.db.com.db'
example.db.db.com
$ sed 's/\.db$//' <<<'example.db.com.db'
example.db.com
No sed, $
corresponde ao fim da linha, então você pode tentar
echo example.db.db.com.db | sed 's/\.db$//'
Note que eu retrocedai o ponto para corresponder literalmente, caso contrário, ele corresponde a qualquer caractere.
Para remover os últimos três caracteres da string
sed 's/.\{3\}$//'
Exemplo
% sed 's/.\{3\}$//' <<< "example.db.db.com.db"
example.db.db.com