Как удалить/заменить все в столбце после определенного символа, извлеченного с помощью awk?

Как удалить/заменить все в столбце после определенного символа, извлеченного с помощью awk?

Пример файла .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

Мне нужно удалить это:

.png
.png?fefsfes
.png?gtdrdrg

Я использую это

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

чтобы получить результат:

/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

Можно ли как-то извлечь столбец awk '{ print $1}'и удалить все после последнего числа?

Желаемый результат:

/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

решение1

Если вы хотите сохранить суть вашей команды awk, то вы можете просто subудалить ненужную конечную часть$1

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

или (возможно, более неловко)

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

решение2

Вы можете попробовать следующее решение awk -

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

с использованием разделителя нескольких полей.

Связанный контент