我的文本文件有很多这样的行:
12345|any string |5585|more string|yet more string|safdowdjfpd|wdfiojeif
我想找到一行代码,代码前为空值:
12345|any string|5585||yet more string|safdowdjfpd|wdfiojeif
文件中还有其他行有空字符串,因此它必须只是被捕获的第3和第4个管道符号。
答案 0 :(得分:1)
非常简单的字符串匹配:
/\|\|..\|/
这匹配||后跟任意两个字符,以|
结尾答案 1 :(得分:1)
试试这个
/.*\|.*\|.*\|\|.*/
使用egrep进行测试
[root@srv test]# echo "12345|any string|5585|annoying string|CODE|safdowdjfpd|wdfiojeif" | egrep -o ".*\|.*\|.*\|\|.*"
[root@srv test]#
[root@srv test]# echo "12345|any string|5585||CODE|safdowdjfpd|wdfiojeif" | egrep -o ".*\|.*\|.*\|\|.*"
12345|any string|5585||CODE|safdowdjfpd|wdfiojeif
[root@srv test]#
答案 2 :(得分:1)
这匹配包含连续管道的任何字符串,这些管道是字符串的第3和第4个管道:
^[^|]+\|[^|]+\|[^|]+\|\|
匹配
12345|any string|5585||yet more string|safdowdjfpd|wdfiojeif
不匹配:
12|345|any string|5585||yet more string|safdowdjfpd|wdfiojeif
12345|any string|5585|yet more string|safdowdjfpd|wdfiojeif
答案 3 :(得分:0)
到目前为止,您尝试过哪些模式?其中\\|{2}
是什么?
答案 4 :(得分:0)
计算该位置的[任何字符]的数量:
/.+\|.+\|.+{0}\|.+\|.+\|.+\|.+/