如何在 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 awk
和 google regular expressions
.
我有一个目标文件,分隔符为 "|^/"
。
示例:
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 awk
和 google regular expressions
.