jm_
jm_

Reputation: 641

Insert with sed n repeated characters

Creating a printout file from a mysql query, I insert a separation line after every TOTAL string with:

sed -i /^TOTAL/i'-------------------------------------------------- ' file.txt

Is there any more elegante way to repeat n "-" characters instead of typing them?

For instance, if I had to simply generate a line without finding/inserting, I would use:

echo -$-{1..50} | tr -d ' '

but don't know how to do something similar with sed into a file.

Thanks!

Upvotes: 2

Views: 9521

Answers (3)

Gilles Quénot
Gilles Quénot

Reputation: 185025

Another way using builtin printf and bash brace expansion :

sed -i "/^TOTAL/i $(printf '%.0s-' {0..50})" file.txt

Upvotes: 3

Gilles Quénot
Gilles Quénot

Reputation: 185025

With , you can repeat a character N times, see :

perl -pe 's/^TOTAL.*/"-"x50 . "\n$&"/e' file.txt

or :

perl -pe 's/^TOTAL.*/sprintf("%s\n%s", "-"x50, $&)/e' file.txt

and you keep a syntax close to sed.

Upvotes: 3

that other guy
that other guy

Reputation: 123450

Just combine the two:

sed -i /^TOTAL/i"$(echo -$___{1..50} | tr -d ' ')" file.txt

Upvotes: 4

Related Questions