0

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

我用来创建标题的行是:

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 而实际上没有给我一个换行符。

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

4

2 回答 2

5

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

(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"
于 2012-09-07T16:01:22.643 回答
0

之后附加它。

echo >> "$1 3.txt"
于 2012-09-07T16:00:07.767 回答