What Is GREP in Linux and How Do You Use It

by Tyrese Harris
20 minutes read

What Is GREP in Linux and How Do You Use It

A photograph of a person kneading on his laptop computer system.

Grep is a little UNIX educational program for spotting rivalling patterns. Initially launched in V6 UNIX, you can presently spot it on almost any UNIX-prefer gizmo such as Linux, macOS, and also even BSDs. In this message, I will certainly go via the requisites of Grep and also substantiate you some instances of how to consumption the educational program for everyday projects.

Textile
  • The Fundamentals of Utilising Grep
  • Placement Documents in a Directory website
  • Forget the Shuck
  • Recursive Searches
  • Rivalling Documents Containing String
  • Detect the Different
  • Words and also Pitches
  • Adding Line Numbers to the Grep Result
  • Utilising Long term Regex with Grep
  • Adding Bordering Pitches to the Grep Result

The Fundamentals of Utilising Grep

At its core, Grep is a humble and also straightforward educational program. It takes in an input, situates the message that you want in that input, and also prints the complements as upshot. Grep can process simply about any humble message source. This makes it possible for it to read input coming from other commands and also filter via documents balanced.

The simplest way to earn consumption of initiated with Grep is by reading documents from a message record. For example, the subsequent command prints the content of my sample.txt record:

grep '' sample.txt

Better, you can consumption this attribute to lookout and also spot capricious chunks of message inside your message documents:

grep 'word' sample.txt
A terminal validating Grep's humble word rivalling attribute.

You can in addition consumption Grep with UNIX pipelines, permitting you to glue with each other plenty of powers in a single command:

cat sample.txt | grep ''
A terminal validating Grep printing the totality record as speedily as sprinting without any crises.

Commendable to recognize: glancing to heighten your UNIX untangling? Learn how to orchestrate pagers occupational in Linux by investigating out our cheatsheet for GNU less.

Placement Documents in a Directory website

One of the simplest projects that you can execute with Grep is spotting documents in a directory listing. To execute this, you can send out the upshot of the ls command via a UNIX tube balanced to Grep.

The subsequent command will certainly print and also underscore all the documents in your Downloads folder with the .jpg record expansion:

ls ~/Downloads | grep \.jpg
A terminal validating Grep filtration record checklists based on record expansion.

You can in addition send out a added gambled out ls upshot to Grep and also consumption that for pattern rivalling. For instance, the subsequent checklists all the documents in the directory with less than 1MB of record size:

ls -lh ./ | grep .K
A terminal validating Grep's aptitude to match message inside other larger message.

Forget the Shuck

By default, almost all powers in a UNIX-prefer gizmo are pod-sensitive. This methodologies that the gizmo treats the string “Hello there” in various ways from “hello,” “hEllo,” and also “helLo.”

A terminal validating Grep's default pod sensitive projects.

This projects can be a pain as speedily as glancing for strings inside documents. For example, an essay can have both “Hello there” and also “hello” at unmodified time. To address this, sprinted Grep with the -i flag obeyed by the string that you want to spot.

grep -i Hello hello.txt
A terminal validating the -i flag debilitating Grep's pod level of sensitivity.

Recursive Searches

Grep can lookout via added than one record or directory at unmodified time. This is desirable if you’re kneading on a vacancy with plenty of documents and also you want to recognize whereby a string of message shows up in a directory. For example, the subsequent command complements the word “MakeTechEasier” inside the “sample” directory:

grep -r 'MakeTechEasier' ./sample
A terminal validating Grep's aptitude to match plenty of documents at as speedily as.

That said, gaining usage of the -r flag will certainly in addition frustrate Grep to filter via every record in your target directory. This can be an woe if you in addition have non-message documents inside the folder that you’re surfing on. To hamper that, sprinted Grep with the -I flag:

grep -rI 'MakeTechEasier' ./sample

On a side note: divulge how you can model documents in the terminal gaining usage of the touch command.

Rivalling Documents Containing String

Unconcerned from validating whereby a capricious string erupts in various documents, you can in addition consumption Grep to model a list of documents that encompass your target message. This is desirable if you want to recognize if a record includes a details string yet don’t want Grep to print every instance of it in the terminal.

To execute this, sprinted Grep with the -r and also -l flags obeyed by the string that you want to match and also the directory that you want to filter at:

grep -rl MakeTechEasier ./sample
A terminal validating Grep printing the relative paths of documents that encompass the target string.

You can even encase your Grep command inside a Bash subshell to model plenty of maladies for your message rivalling. For example, the subsequent pitch upwards of code will certainly single rejoinder that documents that encompass both “Hello there” and also “MakeTechEasier” in the “sample” folder:

grep -rl MakeTechEasier $(grep -rl Hello ./sample)
A terminal validating Grep gaining usage of Bash subshells to execute multi-affliction message rivalling.
What Is GREP in Linux and How Do You Use It 34

Detect the Different

Unconcerned from enforcing balanced combs, Grep can in addition rejoinder the results that doesn’t match your first criteria. While it could seem negative at first, this can be helpful in sheaths whereby you need to underscore fiascos and also anomalies from your message input.

To execute this, sprinted Grep with -v along with the other flags that you want to permit. For instance, the subsequent will certainly recursively lookout via every record in my “/and also so on/nginx” folder and also rejoinder all the jabbers upwards that don’t encompass the string “nginx”:

grep -rv 'nginx' /etc/nginx
A terminal validating Grep's invert flag that complements every little thing yet the target string.

Words and also Pitches

It in addition could be desirable to educate Grep to lookout for hefty words or jabbers upwards, instead of anything containing a details pattern. This is desirable if you’re rivalling a string of personalities that’s ordinary in a lot of words. For example, rivalling the word “it” will certainly rejoinder a lot of maligning positives since “it” is a ordinary string that you can spot in words.

To mend this, you can sprinted Grep with the -w flag obeyed by the word that you want to match:

cat it.txt | grep -w it
A terminal validating the totality word rivalling flag for Grep.

Instead of printing out every word that includes the pattern, Grep will certainly single print the word by itself. It executes unmodified thing for totality jabbers upwards with the -x flag, so if you’re glancing for a expression or a single pitch upwards in a arrangement record, that can actually assistances.

A terminal validating Grep rivalling totality jabbers upwards on the target string.

Adding Line Numbers to the Grep Result

Line digits are an instrumental void of debugging powers and also frisking message. It makes it possible for you to accurately reference the place of a capricious ethical or sentence, gaining it a lot faster to mend and also modify.

In this alertness, Grep comes with the aptitude to print pitch upwards digits to its default upshot. To execute this, sprinted the educational program with the -n flag obeyed by the string that you want to match:

grep -n main ./my-code.c
A terminal validating Grep printing the pitch upwards digit of the target string in the my-code.c record.

Through the assistances of UNIX pipelines, you can in addition readjust Grep’s upshot and also single print the pitch upwards digits of what you’re glancing for. This offers it a lot remover and also less complicated to evaluate substantial texts:

grep -n Sed essay.txt | cut -f 1 -d :
A terminal validating Grep confiscating reward of UNIX pipelines to strip fruitless documents before printing to the terminal.
What Is GREP in Linux and How Do You Use It 35

FYI: UNIX pipelines are added than simply a gizmo for Grep. Learn how to automate your confidential pod projects by gaining and also gaining usage of SSH pipelines.

Utilising Long term Regex with Grep

Grep intakes the Easy Invariant Saying (BRE) metacharacter kit to match and also filter message strings. While this occasionally jobs for a lot of projects, some users could spot it limiting, specifically as speedily as kneading with pattern groups.

To address this, a lot of Grep implementations lend the -E flag, which makes it possible for the educational program to evaluate Long term Invariant Saying (ERE) metacharacters. For instance, the subsequent command will certainly single occupational with the -E flag:

printf "hellonhellooooon" | grep -E .*o{2}$
A terminal validating Grep gaining usage of the Long term Regex metacharacter kit.

Chit: the GNU difference of Grep intakes some ERE usability by default. However, it’s nice behavior to consumption -E whenever you consumption ERE to preserve compatibility with other UNIX-prefer contraptions.

Better, Grep in addition owns a one-of-a-kind position that decreases all Regex purposes entirely. To consumption this, sprinted the educational program with the -F flag obeyed by your humble string:

grep -F [MakeTechEasier] ./fixed.txt
A terminal validating the accurate match for the target string with Grep's

Adding Bordering Pitches to the Grep Result

One of the core usefulness of Grep is validating whereby message shows up in your record or input stream. However, there are instances whereby simply expiring upwards being aware the accurate place of a string doesn’t assistances as speedily as troubleshooting crises. For example, a accident log occasionally bargains second context before it prints the perfunctory “Division Fault” post.

One way to fix this woe is by sprinting Grep with the -C flag obeyed by the amount of jabbers upwards that you want to print about your target message. The subsequent command prints 5 jabbers upwards before and also after your message match:

grep -C 5 'Hello' ./hello-sample.txt
A terminal validating Grep's aptitude to print the encircling context of a target string.

You can in addition tailor whether Grep single prints the pre-match or short message-match contexts with the -B and also -A flags. For instance, the subsequent will certainly print the previous ten jabbers upwards after your target string:

grep -A 10 'Hello' ./hello-sample.txt
A terminal validating Grep printing the next off 10 jabbers upwards after its first string match.
What Is GREP in Linux and How Do You Use It 36

Through the requisites of Grep and also how to consumption it for your everyday projects under your belt, you can presently snatch your first interfere expiring upwards being aware the command pitch upwards and also core UNIX powers. Study added of this severely inconsonant and also deep planet by learning how sed jobs in Linux.

Image credit ratings: Alejandro Escamilla via Unsplash. All alterations and also screenshots by Ramces Red.

Related Posts