【问题标题】:printf "columns" and newlineprintf“列”和换行符
【发布时间】:2012-09-07 15:58:09
【问题描述】:

在我的程序中,我尝试为将在整个脚本中添加的文件设置列标题。

我用来创建标题的行是:

printf '%-10s' "csci" "csc" "Line #" "File Name" > "$1 3.txt"

这会像我想要的那样创建标题,但是当我去添加下一行时,它会添加到这一行的末尾而不是下一行。

我一直在尝试在标题创建行中添加换行符,因此添加的下一行将是空行,但我添加换行符的所有尝试都得到了奇怪的结果(或者我只是没有想要)。

我试过像这样添加 \n:'%-10s\n',但这只会让我的标题显示在不同的行上(这是我所期望的,但无论如何都必须尝试这样做)。

然后我尝试了:printf '%-10s' "csci" "csc" "Line #" "File Name" "\n"> "$1 3.txt",但这只是按原样打印了 \n,而实际上并没有给我一个换行符。

那么,如果我的问题现在还不明显,我怎样才能在那里换行?

【问题讨论】:

    标签: bash newline printf


    【解决方案1】:

    在打印列后添加echoprintf 语句,以便添加新行:

    (printf '%-10s' "csci" "csc" "Line #" "File Name"; echo) > "$1 3.txt"
    # or
    (printf '%-10s' "csci" "csc" "Line #" "File Name"; printf '\n') > "$1 3.txt"
    

    或为printf 定义整行并在末尾添加\n

    printf '%-10s %-10s %-10s %-10s\n' "csci" "csc" "Line #" "File Name" > "$1 3.txt"
    

    Bash 上,这也应该可以,尽管它会在新行的末尾附加一些空格:

    printf '%-10s' "csci" "csc" "Line #" "File Name" $'\n' > "$1 3.txt"
    

    【讨论】:

    • 我最终定义了整行并将其添加到末尾。谢谢!
    【解决方案2】:

    事后追加。

    echo >> "$1 3.txt"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-28
      • 2012-01-20
      • 2022-08-06
      • 1970-01-01
      • 2011-02-10
      • 1970-01-01
      相关资源
      最近更新 更多