Я найшвидший і найпростіший спосіб я вирішити цю проблему:
Коли ми хочемо замінити символ нового рядка \n пробілом :
xargs < file
xargsмає власні обмеження щодо кількості символів на рядок та кількості всіх символів разом, але ми можемо їх збільшити. Деталі можна знайти, виконавши цю команду: xargs --show-limitsі звичайно в посібнику:man xargs
Коли ми хочемо замінити один символ на інший саме одним символом :
tr '\n' ' ' < file
Коли ми хочемо замінити один символ багатьма символами :
tr '\n' '~' < file | sed s/~/many_characters/g
Спочатку ми замінюємо символи нового рядка \nдля тильдів ~(або вибираємо інший унікальний символ, відсутній у тексті), а потім замінюємо символи тильди будь-якими іншими символами ( many_characters) і робимо це для кожного тильду (прапор g).
sedскрипт в одинарні лапки, щоб Bash не возився з ним (оскількиsed s/\n/ /gдзвінкиsedз двома аргументами, а самеs/n/і/g); (2) , так як ви хочете вихідcat file | grep patternбути вхід вsed, а НЕ аргументи вsed, необхідно усунутиxargs; і (3) тут немає необхідностіcat, оскількиgrepможна взяти ім'я файлу як другий аргумент. Отже, ви повинні були спробуватиgrep pattern file | sed 's/\n/ /g'. (У цьому випадку це не спрацювало б із причин, наведених у вищенаведеному посиланні, але тепер ви знаєте на майбутнє.)