如何在awk中使用多个字符作为单个分隔符?

时间:2017-11-10 18:09:51

标签: shell awk gawk

我的目标文件的分隔符为"|^/"

示例:

123|^/qwe|^/po9076|^/env12|^/opti|^/546454

现在要求是获取每一行中的字段数。

我累了下面的东西,但没有给出正确的结果。

echo "123|^/qwe|^/po906|^/env12|^/opti|^/54644" | awk -F'|^/' '{print NF; exit}'

如何解决这个问题?

注意:字段值中可以有|^/。因此,分隔符应为|^/组合

2 个答案:

答案 0 :(得分:2)

$ echo "123|^/qwe|^/po906|^/env12|^/opti|^/54644" | awk -F'\\|\\^/' '{print NF; exit}'
6

man awkgoogle regular expressions

答案 1 :(得分:0)

您应该使用大括号表达式(或字符类)作为字段分隔符:

echo "123|^/qwe|^/po906|^/env12|^/opti|^/54644" | awk -F '[|^/]+' '{print NF; exit}'

6

正则表达式[|^/]+会将[...]中的一个或多个给定字符作为输入字段分隔符。