xargs добавляет пробел после выражения echo при выводе на новую строку - PullRequest
0 голосов
/ 31 октября 2018

с использованием 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

Это добавляет результат на новой строке после эха, но также добавляет пробел перед результатом на первой новой строке, как я могу остановить это?

1 Ответ

0 голосов
/ 31 октября 2018

Это не xargs, который добавляет пробел. Это команда echo:

Аргументы утилиты echo должны быть разделены одиночными <space> символами , а символ <newline> должен следовать за последним аргументом. (Текст из Стандарт Posix ; выделение добавлено.)

Если вы хотите больше контроля, используйте printf:

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

В отличие от printf автоматически не добавляет символ новой строки в конце, поэтому его необходимо включить в формат.

Обратите внимание, что printf автоматически интерпретирует escape-последовательность как \n в строке формата (но не в интерполированных аргументах). В качестве дополнительного бонуса за использование printf вы можете не указывать параметр -n1, поскольку printf автоматически повторяет формат до тех пор, пока не будут использованы все аргументы.

...