用文本文件中的格式化输出替换特定行

时间:2013-10-29 10:23:06

标签: bash sed

我有一个程序将数据输出到文本文件,但截至目前它只是在文件末尾连接。我想使用printf获取一些格式化的输出,并告诉sed或awk替换.txt中的某一行。

我尝试过几种不同的方法。现在我试图以$ name开头并用

替换它
printf "%-12s%-9s%-9s%-12s%-9s%-14s%-10s\n" "$name" "$quiz" "$hw" "$midterm" "$final"          
                  "$numberGrade" "$letterGrade"

我试图使用sed -i / ^ $ name / \ c ...但是如果我将它设置为变量,我无法找到保留printf格式的方法。有一个简单的方法吗?

1 个答案:

答案 0 :(得分:2)

您应该给我们一个输入流的示例和预期输出的示例。

现在,研究的一些要素:

  • awk提供printf函数的实现
  • 您可以尝试以下方式:

    formatRow=$(printf "%-12s%-9s%-9s%-12s%-9s%-14s%-10s" "$name" "$quiz" "$hw" "$midterm" "$final" "$numberGrade" "$letterGrade")
    sed -i "s/^$name.*/$formatRow/" filename