Stripping Comments and Newlines

cat /etc/squid/squid.conf| sed -e 's/^#.*//g' | sed -e ':r;N;s/\n$//g;br'

First part:

sed -e 's/^#.*//g'

strips any line beginning (^) with # and anything that follows after the hash.

Next part:

sed -e ':r;N;s/\n$//g;br'
  1. create register r,
  2. put newline (N) in register r,
  3. substitute all ending newlines (\n$) with nothing //,
  4. repeat with register r.

Insert a Space After Every Character

Using bash:

cat test | sed -s 's/\([a-zA-Z0-9]\)/\1 /g'

Note that sed needs the grouping operators ( and ) escaped.

Insert a Line at a Given Position

Suppose we have a text file containing the following lines:

number 1
number 3

and that we want to insert number 2 as the second line between number 1 and number 3, we would issue:

sed -i '2inumber 2' file.txt

where the parts of the fragments represent:

  • 2 the line number,
  • i for the insert command, and
  • number 2 the data that has to be inserted.

which will modify the file in-place such that the contents of the file after the insertion becomes:

number 1
number 2
number 3

Print all Lines Between Bounds

To print out all the lines between 5 and 10, issue:

sed -n '5,10p' file.txt

Normalizing Paths

One way to normalize filenames is to pass the name through the streamline editor, sed:

echo "/path/to/file.txt" | LANG=C sed "s/[^\x20\x30-\x39\x40-\x5a\x61-\x7a\x2f\x5c\x5b\x5d]//g"

in order to remove unwanted characters.

The hexadecimal set that sed matches in the example corresponds to all characters 0 to 9, a to z, A to Z plus space, the forward- and backward slashes as well as the square brackets that are used typically to store the YouTube ID within the filename.


fuss/sed.txt ยท Last modified: 2024/06/22 03:48 by office

Access website using Tor Access website using i2p Wizardry and Steamworks PGP Key


For the contact, copyright, license, warranty and privacy terms for the usage of this website please see the contact, license, privacy, copyright.