【问题标题】:Append output of a command to file without newline在没有换行符的情况下将命令的输出附加到文件
【发布时间】:2014-02-10 09:13:23
【问题描述】:

我在 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

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

【问题讨论】:

    标签: unix append printf output


    【解决方案1】:

    你只需要 tr 在你的情况下

    tr '\n' ','
    

    将用逗号替换所有换行符('\n')

    head -1 $line | cut -c22-29 | tr '\n' ',' >> $file
    

    【讨论】:

      【解决方案2】:

      一个非常古老的话题,但即使是现在我也需要这样做(在有限的命令资源上),并且由于它的长度,一个(回复的)命令对我没有用。

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

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

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

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

      • exec 100>&-(关闭新文件)

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

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

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

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

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

      【讨论】:

        猜你喜欢
        • 2011-09-25
        • 2015-11-30
        • 2011-05-09
        • 2018-12-16
        • 1970-01-01
        • 1970-01-01
        • 2017-07-21
        • 1970-01-01
        • 2015-03-25
        相关资源
        最近更新 更多