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

How do I use multiple character as single delimiter in awk?

我有一个目标文件,分隔符为 "|^/"

示例:

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

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

我厌倦了像下面这样的东西,但它没有给出正确的结果。

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

如何解决这个问题?

注意:字段值中可以有|^/。所以分隔符应该是 combination of |^/.

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

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

6

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

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

man awkgoogle regular expressions.