Como deletar/substituir tudo na coluna após determinado caractere obtido com o awk?

Como deletar/substituir tudo na coluna após determinado caractere obtido com o awk?

Exemplo de arquivo.txt:

/map/1.0.0/cd/base/4/23/82.png 200
/map/1.0.0/cd/base/2/48/154.png?fefsfes 200
/map/1.0.0/cd/base/3/45/433.png?gtdrdrg 200

Eu preciso deletar isso:

.png
.png?fefsfes
.png?gtdrdrg

Eu uso isso

$ cat file.txt | awk '{ print $1","$2}'

para obter resultado:

/map/1.0.0/cd/base/4/23/82.png,200
/map/1.0.0/cd/base/2/48/154.png?fefsfes,200
/map/1.0.0/cd/base/3/45/433.png?gtdrdrg,200

Posso de alguma forma buscar a coluna awk '{ print $1}'e excluir tudo após o último número?

Resultado desejado:

/map/1.0.0/cd/base/4/23/82,200
/map/1.0.0/cd/base/2/48/154,200
/map/1.0.0/cd/base/3/45/433,200

Responder1

Se você quiser preservar a essência do seu comando awk, você pode simplesmente subeliminar a parte final indesejada do$1

awk '{sub(/\.png.*$/,"",$1); print $1","$2}' file

ou (talvez mais desajeitadamente)

awk '{sub(/\.png.*$/,"",$1)}1' OFS=, file

Responder2

Você pode tentar a solução awk abaixo -

awk 'BEGIN{FS=".png| "} {print $1,$NF}' kk.txt |tr ' ' ','

usando separador de campos múltiplos.

informação relacionada