Замініть всі нові рядки на простір, крім останнього


Відповіді:


42

Ви можете використовувати paste -s -d ' ' file.txt:

$ cat file.txt
one line
another line
third line
fourth line

$ paste -s -d ' ' file.txt 
one line another line third line fourth line

1
Класно! Для цього -sі -dваріанти, схоже, зроблені.
mkc

10

Ви можете використовувати trдля заміни всіх нових рядків у простір та передавати висновок sedта замінювати останній пробіл назад у новий рядок:

tr '\n' ' ' < afile.txt | sed '$s/ $/\n/'

5

Повторна реалізація ідеї vonbrand в Perl, за умови, що файл досить малий:

perl -p00e 's/\n(?!\Z)/ /g' your_file

+1, оскільки цей метод працює на заміну багатобайтовими символами (на відміну від вставки GNU)
myrdd


-1

Це працювало для мене.

tr '\n' ' ' < file_with_new_line   | sed 's/\ $//g' > file_with_space

Це також видалить останній новий рядок.
terdon

Я не думаю, що це працює нормально. Ви справді спробували ???
Абхіджіт

Так, я маю. Чи ти? Ваша trкоманда замінює всі нові рядки пробілами, а ваша sedкоманда видаляє останній пробіл. Це призводить до отримання файлу без остаточного нового рядка, тому питання не задається. До речі, gв sedкоманді немає жодного сенсу int . Оскільки ви використовуєте $, це може збігатися лише в кінці, gбезглуздо. Також вам не потрібно уникати місця, `` також не має значення.
тердон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.