从mysql查询创建打印输出文件,我在每个TOTAL字符串之后插入一个分隔线:
sed -i /^TOTAL/i'-------------------------------------------------- ' file.txt
是否有更多优雅的方式来重复n“ - ”字符而不是输入它们?
例如,如果我不得不在没有查找/插入的情况下生成一行,我会使用:
echo -$-{1..50} | tr -d ' '
但不知道如何用sed做类似的事情。
谢谢!
答案 0 :(得分:4)
只需将两者结合起来:
sed -i /^TOTAL/i"$(echo -$___{1..50} | tr -d ' ')" file.txt
答案 1 :(得分:2)
使用perl,您可以重复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