1

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

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

有没有更优雅的方式来重复 n 个“-”字符而不是键入它们?

例如,如果我必须在不查找/插入的情况下简单地生成一行,我会使用:

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

但不知道如何将 sed 放入文件中。

谢谢!

4

3 回答 3

4

只需将两者结合起来:

sed -i /^TOTAL/i"$(echo -$___{1..50} | tr -d ' ')" file.txt
于 2013-02-25T17:37:27.803 回答
3

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

sed -i "/^TOTAL/i $(printf '%.0s-' {0..50})" file.txt
于 2013-02-25T22:39:53.243 回答
2

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

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

或者 :

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

并且您的语法接近sed.

于 2013-02-25T17:38:29.537 回答