使用 gawk 或 awk 在第 1 列中查找点并将其替换为文本

使用 gawk 或 awk 在第 1 列中查找点并将其替换为文本

我有一个 csv 如下

1.2kbps,link1,description
1.2mbps,link2,description

我想查找并替换

a)第 1 列中带有 000 的点和 kbps

b) 使用 gawk 或 awk 在第 1 列中使用 000000 的点和 mbps,输出应如下所示

12000,link1,description
12000000,link2,description

我更喜欢 Gawk,但可以使用 awk 示例并使用它

谢谢

答案1

这应该可以解决您的问题:

awk -F, '
         BEGIN{OFS=FS}
         /kbps/{gsub("kbps","",$1);$1=$1*1000};
         /mbps/{gsub("mbps","",$1);$1=$1*1000000}
         1' file.csv

答案2

试试这个(针对 GNU Awk 3.1.7 进行测试):

awk '{sub(/\./,"");sub(/kbps/,"000");sub(/mbps/,"000000")}1' foo.csv

相关内容