从 mysql 查询创建打印输出文件,我在每个 TOTAL 字符串后插入一个分隔线:
sed -i /^TOTAL/i'-------------------------------------------------- ' file.txt
有没有更优雅的方式来重复 n 个“-”字符而不是键入它们?
例如,如果我必须在不查找/插入的情况下简单地生成一行,我会使用:
echo -$-{1..50} | tr -d ' '
但不知道如何将 sed 放入文件中。
谢谢!
只需将两者结合起来:
sed -i /^TOTAL/i"$(echo -$___{1..50} | tr -d ' ')" file.txt
使用内置printf
和 bash大括号扩展的另一种方法:
sed -i "/^TOTAL/i $(printf '%.0s-' {0..50})" file.txt
使用perl,您可以重复一个字符 N 次,请参阅:
perl -pe 's/^TOTAL.*/"-"x50 . "\n$&"/e' file.txt
或者 :
perl -pe 's/^TOTAL.*/sprintf("%s\n%s", "-"x50, $&)/e' file.txt
并且您的语法接近sed
.