Я найшвидший і найпростіший спосіб я вирішити цю проблему:
Коли ми хочемо замінити символ нового рядка \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'
. (У цьому випадку це не спрацювало б із причин, наведених у вищенаведеному посиланні, але тепер ви знаєте на майбутнє.)