
Пример файла .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 ' ' ','
с использованием разделителя нескольких полей.