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

おすすめ記事