将命令的输出附加到文件而不换行

时间:2014-01-21 00:27:44

标签: unix append printf output

我在unix脚本中有以下行:

head -1 $line | cut -c22-29  >> $file

我想在没有换行符的情况下附加此输出,而是用逗号分隔。有没有办法将此命令的输出提供给printf?我试过了:

head -1 $line | cut -c22-29 | printf "%s, " >> $file

我也尝试过:

printf "%s, " head -1 $line | cut -c22-29 >> $file

这些都没有奏效。有人有什么想法吗?

2 个答案:

答案 0 :(得分:11)

你只想在你的情况下使用

tr '\n' ','

将用逗号

替换所有换行符('\ n')
head -1 $line | cut -c22-29 | tr '\n' ',' >> $file

答案 1 :(得分:0)

一个非常老的话题,但是即使是现在,我仍然需要(在有限的命令资源上)执行此操作,并且由于其长度过长,一个(已答复)命令对我来说没有用。

也可以通过使用文件描述符来添加到文件:

  • touch file.txt(创建新的空白文件)

  • exec 100<> file.txt(ID为100的新fd),

  • echo -n test >&100(回测新的fd)

  • exec 100>&-(关闭新的fd)

例如,可以通过从特定点读取文件来完成从特殊字符开始的追加。

  • exec 100 <> file.txt-新的描述符

  • read -n 4 < &100-读取4个字符

  • echo -n test > &100-将回声测试附加到从第四个字符开始的文件。

  • exec 100>&--(关闭新的fd)