What is wrong with using "\t" to grep for tab-separated values?
11
votes
4
answers
10714
views
I have a .tsv file (values separated by tabs) with four values. So each line should have only three tabs and some text around each tab like this:
value value2 value3 value4
But it looks that some lines are broken (there is more than three tabs). I need to find out these lines.
---
I came up with following grep pattern.
grep -v "^[^\t]+\t[^\t]+\t[^\t]+\t[^\t]+$"
My thinking:
- first ^ matches the beggining
- [^\t]+ matches more than one "no tab character"
- \t matches single tab character
- $ matches end
And than I just put it into right order with correct number of times. That should match correct lines. So I reverted it by -v option to get the wrong lines.
But with the -v option it matches any line in the file and also some random text I tried that don't have any tabs inside.
**What is my mistake please?**
EDIT: I am using debian and bash.
Asked by TGar
(307 rep)
Aug 16, 2022, 11:47 AM
Last activity: Jun 27, 2025, 08:47 AM
Last activity: Jun 27, 2025, 08:47 AM