Question

I saw someone use an expression like: sed -e 's, *$,,' does anybody know why we can use it like this, and what does it do?

I thought the s command should be sed -e 'addr,addrs/reg/sub/' ?

Was it helpful?

Solution

From Using different delimiters in sed:

sed takes whatever follows the "s" as the separator

It is a good way to avoid escaping too much. Code is more readable if you use a delimiter that is not present in the string you want to handle.

For example let's say we want to replace lo/bye from a string. With / as delimiter it would be a little messy:

$ echo "hello/bye" | sed 's/lo\/bye/aa/g'
helaa

So if we define another separator it is more clear:

$ echo "hello/bye" | sed 's|lo/bye|aa|g'
helaa
$ echo "hello/bye" | sed 's,lo/bye,aa,g'
helaa
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top