joplin-notes/joplin notion extension/linux/Snippets/sed example.md
2026-11-04 00:33:23 +05:30

2.4 KiB

sed example

theory grep is powerful along with other unix tools like cut xargs head less etc. awk goes line by line in a file/stdin giving you all the words in variables with like $1 $2 $3 which you can use however you want

To achieve this using sed (Stream Editor), you can use a regular expression pattern to match the text you want to modify and then replace it with the desired output.

Assuming you want to remove the .md from occurrences of patterns like (sdusyd.md) within a file and considering your example, we use the following sed command:

sed 's/\(([^)]*)\).md/\1/g' file.txt

Here's a breakdown of the command:

  • sed: The command to call Stream Editor.
  • s/pattern/replacement/: The substitute command, where pattern is the regex pattern you are looking to match, and replacement is the text you want to use to replace the matched pattern.
  • \(([^)]*)\).md: This is the regex pattern we are matching.
    • \(: Matches the literal character "(".
    • ([^)]*): Matches and captures any character except ) zero or more times. This corresponds to your <string>.
    • \): Matches the literal character ")".
    • .md: Matches the string .md that we intend to remove.
  • \1: Refers to the first captured group from the match. In this case, it's the string matched by ([^)]*), which is <string>.
  • g: Global flag to perform the replacement for all occurrences within a line.
  • file.txt: The file in which the replacements should occur.

For example, if file.txt contains:

Some text (sdusyd.md) with markdown files and another (anotherfile.md).

After running the command, it will output:

Some text (sdusyd) with markdown files and another (anotherfile).

Note: If you want to directly modify the file (instead of just outputting the modified text to the terminal), you can use the -i option for in-place editing with sed. Just remember to backup your original files before using -i, as it overwrites the original file:

sed -i 's/\(([^)]*)\).md/\1/g' file.txt

This will change file.txt in-place.

  • same thing with perl perl -pe 's/\(([^()]+)\.md\)/\($1\)/g' file.txt : this will only print output without modifying file perl -pi -e 's/\(([^()]+)\.md\)/\($1\)/g' test.txt : this will modify file too

    this worked for me

sed -E -i 's/\(([^\)]*)\.md\)/\(\1\)/g' file.txt

  replicating grep with awk history | awk '/cd/' will replicate3 history | grep 'cd'