Eliminate the Monotony: Automation with sed.

INTRODUCTION

Sed, short for “Stream Editor” has been around for a while, generally used to replace specific string values in a file with another.

Well, that sounds straight forward, why not use the replace function available in text editor…


This content originally appeared on DEV Community and was authored by cloudsky13

INTRODUCTION

Sed, short for “Stream Editor” has been around for a while, generally used to replace specific string values in a file with another.

Well, that sounds straight forward, why not use the replace function available in text editors though?

Of course, you can, but automating this simple task makes it much more efficient, especially in case you need to update a bunch of files.

You’ll see how, in just a bit. Let’s get you familiar with the syntax first.

Syntax

The syntax is pretty basic:

sed 's/pattern/replacement/g' <filename>

The above command replaces pattern with replacement in
the file and prints the output in console.

The letter s stands for substitute.

The letter g stands for globally.

The / is a delimiter used as a field separator.

The above syntax is mostly used to view the output of the
sed command before implementing it.

sed -i 's/pattern/replacement/g' <filename>

The -i option tells sed to update the file in place. You
can check out other options available with sed using sed -
-help
.

TIP

If your pattern or replacement contains /, like in a URL, there can be undesired outputs or errors too.

To avoid that, you can simply use \\ before the /. This treats the / as a normal character and not a delimiter.

PRO TIP

You can use any other character as a delimiter as long as it doesn’t appear in the pattern or replacement.

For example:
sed -i 's|pattern|replacement|g' <filename>, works perfectly fine.

Advanced Usage: Capture Groups in sed

Capture groups are used to define portions of a regular expression (Regex) that can be captured and stored for later use.

If you’re unfamiliar with Regex, don’t worry, I’ll cover the example used here. You can read more about it here

Capture Groups are defined using parenthesis () which enclose the text/pattern to be captured.

Let’s see a simple scenario below:

Say I have a file sample.txt with the below data:

name: James Bond

Now I need to update it as shown below:

The name is Bond, James Bond.

One can achieve the desired state using sed command in combination with Regex:

sed -i 's/\(.*\): \(.*\)/The \1 is Bond, \2./g'  sample.txt

Comparison with standard syntax:

sed -i 's/pattern/replacement/g' <filename>

• pattern = (.): (.)

\(.*): collects all data present before : and maps it to \1 , (i.e. \1=“name”.)

\(.*\) collects all data present after : and maps it to \2 , (i.e. \2=“James Bond”.)

• replacement = The \1 is Bond, \2.

CONCLUSION

• Sed command is lightweight and efficient.
• It’s compatibility with Regex makes complex text manipulation eazy-peezy lemon squeezy.
• It provides the option of in-place editing instead of creating a new copy.
Easy integration with automation scripts, eliminating the monotony.

Well, it’s all SED and done now.

Congratulations!!

We’ve successfully scratched the surface of the above "said" command.

(Pun-o-meter at 2 now)

But I hope this blog post enables you to envision some real-life use cases of sed.

So, tell me...

What could be a good problem statement to solve using sed?

(Cue for another blog? May be…)

Thanks for making it till the end. Drop a feedback below.


This content originally appeared on DEV Community and was authored by cloudsky13


Print Share Comment Cite Upload Translate Updates
APA

cloudsky13 | Sciencx (2023-04-26T18:07:37+00:00) Eliminate the Monotony: Automation with sed.. Retrieved from https://www.scien.cx/2023/04/26/eliminate-the-monotony-automation-with-sed/

MLA
" » Eliminate the Monotony: Automation with sed.." cloudsky13 | Sciencx - Wednesday April 26, 2023, https://www.scien.cx/2023/04/26/eliminate-the-monotony-automation-with-sed/
HARVARD
cloudsky13 | Sciencx Wednesday April 26, 2023 » Eliminate the Monotony: Automation with sed.., viewed ,<https://www.scien.cx/2023/04/26/eliminate-the-monotony-automation-with-sed/>
VANCOUVER
cloudsky13 | Sciencx - » Eliminate the Monotony: Automation with sed.. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2023/04/26/eliminate-the-monotony-automation-with-sed/
CHICAGO
" » Eliminate the Monotony: Automation with sed.." cloudsky13 | Sciencx - Accessed . https://www.scien.cx/2023/04/26/eliminate-the-monotony-automation-with-sed/
IEEE
" » Eliminate the Monotony: Automation with sed.." cloudsky13 | Sciencx [Online]. Available: https://www.scien.cx/2023/04/26/eliminate-the-monotony-automation-with-sed/. [Accessed: ]
rf:citation
» Eliminate the Monotony: Automation with sed. | cloudsky13 | Sciencx | https://www.scien.cx/2023/04/26/eliminate-the-monotony-automation-with-sed/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.