【问题标题】:xargs adds whitespace after echo statement when outputting on to new linexargs 在输出到新行时在 echo 语句后添加空格
【发布时间】:2018-11-01 00:05:53
【问题描述】:

使用 xargs 和 echo 将 samtools 的结果输出到 output.txt 文件中的新行

samtools view $SAMPLE\.bam | cut -f3 | uniq -c | sort -n | \
xargs -r0 -n1 echo -e "Summarise mapping...\n" >> ../output.txt

这会将结果添加到回显之后的新行,但还会在第一行的结果之前添加一个空格,我该如何停止呢?

【问题讨论】:

  • 如果您添加第一个命令的输出示例、您的预期输出和实际输出,人们可以帮助您而无需安装 samtools。

标签: bash echo xargs


【解决方案1】:

添加空格的不是xargs。这是echo 命令:

echo 实用程序参数应由单个<space> 字符分隔<newline> 字符应跟在最后一个参数之后。 (来自Posix standard 的文字;已添加重点。)

如果您想要更多控制权,请使用printf

...
xargs -r0 -n1 printf "Summarise mapping...\n%s\n" >> ../output.txt

不像printf不会在末尾自动添加换行符,所以需要在格式中包含。

请注意,printf 会自动解释格式字符串中的 \n 之类的转义序列(但不会在插值参数中)。作为使用printf 的额外好处,您可以省略-n1 选项,因为printf 会自动重复该格式,直到所有参数都用完为止。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-08
    • 2015-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-04
    • 1970-01-01
    相关资源
    最近更新 更多