0

I wrote a line like this diff fileA.txt fileB.txt | grep -v "^[11,12d9]" . Without the grep part, the output would look like this:

1d0 < loop 11,12d9 < polo < pool 

But with grep, the output would look like this:

< loop < polo < pool 

I think that grep -v is kind of like reverse search. But I don't understand the ^[11,12d9] part, what does it do?

2
  • 2
    What inspired you to write that particular line? What did you actually want to achieve? Commented Feb 6, 2021 at 11:26
  • -v is not reverse search (it does not read the file/stream backwards). It is a inverted filter (find those that don't match). Commented Feb 6, 2021 at 11:44

1 Answer 1

5

grep -v "^[11,12d9]"

yes, as you found out -v is used for invert match and will return lines that do not match the given pattern ^[11,12d9].

and what ^[11,12d9] is doing is that saying match characters in [...] and if they were appeared at the begging of a line (^ is the beginning of the line anchor) then ignore those lines (since of used -v invert match);

so basically lines that started with one of 1, ,, 2, d or9 characters will be ignored (repeated characters also will be ignored within character-class).

but if you would like to ignore the line starting with string 11,12d9, you need grep -v '^11,12d9'.


*Not relevant to the question but to keep notes about use of ], ^ and - characters within character class:

if ^ character: it can be placed anywhere in [] but not the first character; if it was first character, it acts as negation on the characters within that class.
if ] character: it should be the first character.
if - character: it should be the last character.

0

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.