Замените все символы новой строки на пространство, за исключением последнего
Как заменить все новые строки пробелом, кроме последней строки новой строки.
Я могу заменить всю новую строку на пробел, используя tr
, но как я могу сделать это с некоторыми исключениями?
5 ответов
30
Вы можете использовать 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
ответил grebneke 9 FebruaryEurope/MoscowbSun, 09 Feb 2014 01:40:52 +0400000000amSun, 09 Feb 2014 01:40:52 +040014 2014, 01:40:52
7
Вы можете использовать tr
, чтобы заменить все новые строки на пробел и передать вывод в sed
и замените последнее пространство на новую строку:
tr '\n' ' ' < afile.txt | sed '$s/ $/\n/'
ответил Ketan 9 FebruaryEurope/MoscowbSun, 09 Feb 2014 00:46:10 +0400000000amSun, 09 Feb 2014 00:46:10 +040014 2014, 00:46:10
4
Внедрение идеи vonbrand в Perl при условии, что файл достаточно мал:
perl -p00e 's/\n(?!\Z)/ /g' your_file
ответил Joseph R. 9 FebruaryEurope/MoscowbSun, 09 Feb 2014 05:17:53 +0400000000amSun, 09 Feb 2014 05:17:53 +040014 2014, 05:17:53
-1
Что-то вроде sed -e 's;\n\(.\); \1;'
должно делать ...
ответил vonbrand 9 FebruaryEurope/MoscowbSun, 09 Feb 2014 00:50:43 +0400000000amSun, 09 Feb 2014 00:50:43 +040014 2014, 00:50:43
-1
Это сработало для меня.
tr '\n' ' ' < file_with_new_line | sed 's/\ $//g' > file_with_space
ответил Abhijit 29 FebruaryEurope/MoscowbMon, 29 Feb 2016 11:01:46 +0300000000amMon, 29 Feb 2016 11:01:46 +030016 2016, 11:01:46