Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 拆下Vim中具有重复模式的管路_Regex_Vim - Fatal编程技术网

Regex 拆下Vim中具有重复模式的管路

Regex 拆下Vim中具有重复模式的管路,regex,vim,Regex,Vim,我有一个分号分隔的文本文件,表示一个数据表。我想删除“columns”2和4相同的所有行 来源示例: A;B;C;D;E;F;G 有的,;傅;文本;福;;;; 这,;线路;应;保持;;;; ;酒吧;;酒吧;;;;; 应该导致 A;B;C;D;E;F;G 这,;线路;应;保持;;;; 因为“列”2和4(“B”和“D”)的值在第一行(“Foo”)和最后一行(“Bar”)中相等,但在中间一行(“行”和“剩余”)中不相等 每个“单元格”可以包含任意数量的任意字符,分号除外 我确信g[lobal]命令

我有一个分号分隔的文本文件,表示一个数据表。我想删除“columns”2和4相同的所有行

来源示例:

A;B;C;D;E;F;G
有的,;傅;文本;福;;;;
这,;线路;应;保持;;;;
;酒吧;;酒吧;;;;;
应该导致

A;B;C;D;E;F;G
这,;线路;应;保持;;;;
因为“列”2和4(“B”和“D”)的值在第一行(“Foo”)和最后一行(“Bar”)中相等,但在中间一行(“行”和“剩余”)中不相等

每个“单元格”可以包含任意数量的任意字符,分号除外

我确信
g[lobal]
命令可以做到这一点,但我无法找到与这些行匹配的正确模式。

用于“第2列和第4列相同”的Vim正则表达式是这样的

您应该能够将其与
:g
一起使用

^           # start of line
[^;]*       # anything but a semi-colon (column 1)
;           # delimiter
\(          # start group 1
  [^;]\+    #   anything but a semi-colon, at least 1 character (column 2)
\)          # end group 1
;           # delimiter
[^;]*       # anything but a semi-colon (column 3)
;           # delimiter
\1          # same as group 1 (column 4)
;           # delimiter (to prevent partial matches)
勾选这个:

awk -F';' '$2 != $4 {print $0}' your_file
结果:

awk -F';' '$2 != $4 {print $0}' your_file
A;B;C;D;E;F;G
This;line;shall;remain;;;;