Using sed With a Literal String Instead of an Input File

The sed (Stream Editor) command is a powerful text processing tool that typically operates on files. However, it can also process literal strings directly without requiring input files. This capability is particularly useful for quick text transformations, scripting, and pipeline operations where you need to manipulate text data on-the-fly.

Using the Echo Command with Pipes

The most common method to use sed with a literal string is by piping the output of the echo command to sed. This approach allows you to process text directly from the command line.

echo "This is an old string" | sed 's/old/new/g'
This is an new string

You can chain multiple sed operations together for complex transformations

echo "This is an old string with new content" | sed 's/old/replaced/g' | sed 's/new/updated/g'
This is an replaced string with updated content

Using Here Strings

The here string operator <<< provides a cleaner syntax for passing literal strings to sed without using echo and pipes.

sed 's/old/new/g' <<< "This is an old string"
This is an new string

Multiple operations can be combined using semicolons or multiple sed commands

sed 's/old/replaced/g; s/string/text/g' <<< "This old string needs updating"
This replaced text needs updating

Using the -e Option for Multiple Operations

The -e option allows you to specify multiple sed expressions in a single command, making complex transformations more readable.

echo "Line 1: old data
Line 2: new data
Line 3: old information" | sed -e 's/old/updated/g' -e 's/new/fresh/g'
Line 1: updated data
Line 2: fresh data
Line 3: updated information

Using Variables and Command Substitution

You can combine sed with shell variables and command substitution to process dynamic content

text="Hello world, this is a test"
echo "$text" | sed 's/world/universe/g'
Hello universe, this is a test

Using command substitution to capture sed output

result=$(echo "old data" | sed 's/old/new/g')
echo "Result: $result"
Result: new data

Pattern Matching and Line Operations

When working with multi-line strings, you can use sed's pattern matching capabilities

echo -e "Line 1\nDelete this line\nLine 3" | sed '/Delete/d'
Line 1
Line 3

Print only matching lines using the -n option with the p command

echo -e "Apple\nBanana\nCherry" | sed -n '/B/p'
Banana

Common Use Cases

Operation Command Description
Replace text echo "text" | sed 's/old/new/g' Global text replacement
Delete lines echo "text" | sed '/pattern/d' Remove lines matching pattern
Extract lines echo "text" | sed -n '/pattern/p' Print only matching lines
Insert text sed '1i\New line' <<< "text" Insert text at specific line

Conclusion

Using sed with literal strings provides flexibility for quick text processing tasks without creating temporary files. The combination of echo with pipes, here strings, and the -e option offers multiple approaches to handle different scenarios. This technique is particularly valuable in shell scripting and command-line data processing workflows.

Updated on: 2026-03-17T09:01:38+05:30

1K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements