I was wondering what does the <> do in a grep command

  • grep a b c , try to find a in file b and c
  • grep <html> foo?

What does the <> do? Find the HTML tags?


When inside quotes...

grep '<html>' foo

grep "<html>" foo

...it does exactly that: find a <html> tag inside the foo file.

grep and egrep use POSIX regular expressions, which are described in the manual page of regex(7) – basic for grep, extended/modern for egrep. Neither version treats < or > specially.

When not inside quotes, however, it doesn't do anything useful.

grep <html> foo

grep < html > foo

Most commonly used shells will treat the above equally: run command grep with no arguments, reading from file named html, writing to file named foo. But this won't work, because there is no "pattern" to be given to grep, so you'll get an error message (and an empty foo file).

  • 1
    Since ricedragon is new to regular expressions, it is worth pointing out that grep '<html>' foo will not find <html lang="en">. It is often better to use an HTML parser for searching HTML. – RedGrittyBrick Oct 4 '11 at 9:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.