我正在尝试验证|的数量在文件的行中。在这个例子中,它检查恰好5个柱。
^[\|]{5}$
这会验证5,但不会考虑/忽略其他字符。
Dice|Puppy|Button|Sunny|Music|Extra
我错过了什么?正则表达式总是让我失望。
答案 0 :(得分:5)
试试这个正则表达式:
^[^|]*(\|[^|]*){4}$
答案 1 :(得分:3)
计算管道数量:
line='Dice|Puppy|Button|Sunny|Music'
npipes="$(echo "$line" | tr -c -d '|' | wc -c)"
测试管道数是否为5:
[ "$(echo "$line" | tr -c -d '|' | wc -c)" -eq 5 ] && echo success
在这种方法中,translate(tr
)用于删除除pipe之外的所有字符。 (它删除(-d
)除(-c
)管道符之外的所有内容。然后,字数(wc
)用于计算字节数(-c
)。可以使用标准bash等式测试(-eq
)将此数字与5进行比较。