如何在使用 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 ' ' ','

使用多個欄位分隔符號。

相關內容