![如何在使用 awk 取得特定字元後刪除/替換列中的所有內容?](https://rvso.com/image/97211/%E5%A6%82%E4%BD%95%E5%9C%A8%E4%BD%BF%E7%94%A8%20awk%20%E5%8F%96%E5%BE%97%E7%89%B9%E5%AE%9A%E5%AD%97%E5%85%83%E5%BE%8C%E5%88%AA%E9%99%A4%2F%E6%9B%BF%E6%8F%9B%E5%88%97%E4%B8%AD%E7%9A%84%E6%89%80%E6%9C%89%E5%85%A7%E5%AE%B9%EF%BC%9F.png)
文件.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 ' ' ','
使用多個欄位分隔符號。