我的文本文件有很多这样的行:
12345|any string |5585|more string|yet more string|safdowdjfpd|wdfiojeif
我想在代码之前找到有这个的一行,一个空值:
12345|any string|5585||yet more string|safdowdjfpd|wdfiojeif
文件中还有其他行具有空字符串,因此必须仅捕获第 3 和第 4 个管道符号。
我的文本文件有很多这样的行:
12345|any string |5585|more string|yet more string|safdowdjfpd|wdfiojeif
我想在代码之前找到有这个的一行,一个空值:
12345|any string|5585||yet more string|safdowdjfpd|wdfiojeif
文件中还有其他行具有空字符串,因此必须仅捕获第 3 和第 4 个管道符号。
一个非常简单的字符串匹配:
/\|\|..\|/
这匹配 || 后跟任意两个字符并以 | 结尾
试试这个
/.*\|.*\|.*\|\|.*/
用 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]#
这匹配任何包含连续管道的字符串,这些是字符串的第 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
到目前为止,您尝试过哪些模式?\\|{2}
在他们当中吗?
计算该位置的 [任何字符] 的数量:
/.+\|.+\|.+{0}\|.+\|.+\|.+\|.+/