【发布时间】:2020-03-27 22:51:35
【问题描述】:
我有一个包含如下数据的文件:
New York 100 2 17 12
California 200 10 8 3
Montana 50 25 3 0
我希望将州名视为单个字段,然后计算字段 2 占字段 3 的百分比,并忽略其他字段。
所以我希望输出是
New York 2%
California 5%
Montana 50%
这样就可以得到州名awk -F [0-9] '{print $1}'
但随后其余字段完全无法使用。
如果我不使用字段分隔符,New 和 York 将获得单独的字段编号,而其他字段编号为“减一”。
我可以在 awk 中执行此操作,还是应该切换到我知道一点的 ruby?
【问题讨论】:
-
您的示例中的空格是全部空白字符还是其中一些是制表符?不,你不应该切换到 Ruby。
-
所有空格,没有制表符。
-
空白包括水平制表符、垂直制表符、空白、换行符、换页符等。我想您的意思可能是“所有空白,没有制表符或其他空白”。
-
是的,都是“空格”字符。 ASCII 32。抱歉命名不当
-
是的,“空白”和“空格”这两个词有这么多不同的含义,这很烦人也很不幸。我倾向于认为
blank character是ASCII 32(通常在代码中由" "表示),blank是[:blank:]POSIX 字符类中的任何字符集(通常在代码中表示为\b) 和space是[:space:]POSIX 字符类中的任何字符集(通常在代码中由\s表示)。例如,请参阅gnu.org/software/gawk/manual/gawk.html#Bracket-Expressions,了解这些字符类中的字符定义。
标签: awk