插入sed n个重复字符

时间:2013-02-25 17:33:37

标签: bash sed

从mysql查询创建打印输出文件,我在每个TOTAL字符串之后插入一个分隔线:

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

是否有更多优雅的方式来重复n“ - ”字符而不是输入它们?

例如,如果我不得不在没有查找/插入的情况下生成一行,我会使用:

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

但不知道如何用sed做类似的事情。

谢谢!

3 个答案:

答案 0 :(得分:4)

只需将两者结合起来:

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

答案 1 :(得分:2)

使用,您可以重复N次字符,请参阅:

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

或:

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

并保持语法接近sed

答案 2 :(得分:2)

使用内置printf和bash 大括号扩展的另一种方式

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