如何使用 sed 将字符串替换为类别?

如何使用 sed 将字符串替换为类别?

我有一些类别及其值:

Category: Value:
1*4  15.934934
1*5*3            19.281281
1*8*10*2      78.20912

我想用代表类别的数字替换类别。

例如:

1*4有两个数字那么它会被2替换

1*5*3 有 3 个数字,则将其替换为 3

1*8*10*2 有四个数字,则将其替换为 4

我需要对数百个文件执行该过程,因此自动化该过程非常重要!

答案1

如同钢铁司机的想法,但计算星星:

awk '{ $1 = 1 + gsub(/\*/, "", $1); print; }' < input > output

当在示例输入上运行时,会产生:

2 15.934934
3 19.281281
4 78.20912

答案2

由于sed没有数字概念,这做起来有点费力:

sed -E 's/^[0-9]+\*/1*/; s/^1\*[0-9]+/2/; s/^2\*[0-9]+/3/; s/^3\*[0-9]+/4/;' input

相关内容