printf“columns”和换行符

时间:2012-09-07 15:58:10

标签: bash newline printf

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

我用来创建标题的行是:

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,而没有实际给我换行。

所以,如果我的问题现在不明显,我怎么能在那里得到换行符?

2 个答案:

答案 0 :(得分:4)

在打印列后添加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"

答案 1 :(得分:0)

之后追加。

echo >> "$1 3.txt"