小编TGa*_*Gar的帖子

使用“\t”来 grep 查找制表符分隔值有什么问题?

我有一个包含四个值的 .tsv 文件(由制表符分隔的值)。因此,每一行应该只有三个选项卡,并且每个选项卡周围都有一些文本,如下所示:

value   value2  value3  value4
Run Code Online (Sandbox Code Playgroud)

但看起来有些行被破坏了(有超过三个选项卡)。我需要找出这些线。


我想出了以下 grep 模式。

grep -v "^[^\t]+\t[^\t]+\t[^\t]+\t[^\t]+$"

我的想法:

  • 第一个 ^ 匹配开头
  • [^\t]+ 匹配多个“无制表符”
  • \t 匹配单个制表符
  • $ 匹配结束

然后我只是将其按正确的顺序排列正确的次数。这应该匹配正确的行。所以我通过 -v 选项恢复它以获得错误的行。

但是使用 -v 选项,它会匹配文件中的任何行以及我尝试过的一些随机文本,其中没有任何选项卡。

请问我的错误是什么?

编辑:我正在使用 debian 和 bash。

grep tabulation regular-expression

9
推荐指数
4
解决办法
5751
查看次数

标签 统计

grep ×1

regular-expression ×1

tabulation ×1