Відповіді:
tr '\n' ',' | sed 's/,$/\n/'
tr
замінює кожен символ нового рядка на ,
, включаючи останній (після 07/21/2018
). Потім sed
замінює ,
в кінці з новим рядком , щоб сформувати POSIX-сумісної лінію без закривають ,
.
Зверніть увагу sed
, це інструмент для обробки тексту, який за замовчуванням працює з одним рядком одночасно. Що б не було листя tr
- це одна лінія; це може бути дуже довгим, залежно від вашого вкладу, і sed
може бути вже не найкращим інструментом для вирішення цього питання.
Я б переглянув ідею мати всі результати в одному рядку, просто щоб уникнути такого сценарію. Існують способи заміни цього конкретного sed
інструменту, що працює з байтами (а не рядками). Але навіть якщо ви це зробите тут, у вас все ще буде потенційно дуже довгий рядок, який незручно проаналізувати пізніше.
Гаразд, якщо вам дійсно потрібно це зробити, то використовуйте наступну команду для створення довільно великої лінії. Весь аналіз проводиться за допомогою інструментів, що працюють на байтах:
head -c -1 | tr '\n' ',' && printf '\n'
head
знімає останнього персонажа, ми сліпо припускаємо, що це новий рядок; tr
змінює всі залишки нових рядків на ,
символи; printf
додає зворотний новий рядок, щоб зробити ваш результат лінією, сумісною з POSIX.
Ти хочеш paste
.
cat new.txt | grep Full | awk '{print $1}' | paste -s -d,
Крім того, awk може робити те, що і кіт, і греп
awk '/Full/ {print $1}' new.txt | paste -s -d,
Крім того, awk може відформатувати вихід, але він менш читабельний:
awk '/Full/ {printf "%s%s", (NR == 1 ? "" : ","), $1} END {print ""}' new.txt