awk中误用字段分隔符

时间:2016-10-21 18:06:56

标签: awk

我想在文本中提取Pages:之后的数字,例如

Tagged:         no
Form:           none
Pages:          3
Encrypted:      no

以下awk命令运行良好,因为它在3之前有空格

$ awk -F': ' '$1=="Pages" {print $2}' 
         3

awk -F'[: ]' '$1=="Pages" {print $2}' 

什么都不产生,我认为我指定了两个可能的字符作为字段分隔符。

那么我怎样才能使用awk在Pages:之后提取数字而不需要前面的空格?感谢。

4 个答案:

答案 0 :(得分:3)

看起来你需要告诉awk它不止一个角色:

+

请注意正则表达式中的v = (u(i+1,j)-u(i-1,j))/(2*h)

答案 1 :(得分:2)

-F'[: ]+'不对。虽然在这种情况下有用,但如果有空字段则不会。要使用的右边界定为': +'。请参阅以下示例

$ echo "a:  : b" | awk -F'[: ]+' '{print NF}'
2

$ echo "a:  : b" | awk -F': +' '{print NF}'
3

这可以解决你的问题。

$ awk -F': +' '/^Pages/{print $2}' file

答案 2 :(得分:1)

你可以试试这个;

awk -F': ' '$1=="Pages" {gsub(/ /, "", $2); print $2} '

答案 3 :(得分:1)

为什么要打扰ng2-charts,只需:

-F

编辑:哦,@ BenjaminW。已经在评论中提出这一点。道具++