На этот вопрос уже есть ответ здесь:
Это связано с вопросом, который я задал в переполнении, он остается без ответа, поэтому я хотя Я бы попробовал задать его в сегментах
Моя цель - вернуть специальную функцию \ n. Если бы я запустил
echo -e "My name is \nnick rock and i \nlive by the sea shore." > file
Тогда, когда я пропущу этот файл, вы получите что-то вроде этого
My name is
nick rock and i
live by the sea shore.
То, что я ищу do - это обратная функция возврата \ n, поэтому, когда я повторяю файл с чем-то вроде этого
echo -aoE '([a-zA-Z]){1,5}' file
output
My
name
is
nick
rock
and
i
live
by
the
sea
shore.
, я получаю это вместо этого
My name is nick rock and i live by the sea shore
Вам нужна утилита
$ tr '\n' ' ' < file
My name is nick rock and i live by the sea shore.
tr
для перевода наборов символов, в этом только один символ \n
в SET1 и пробел в SET2. Что касается < file
, то он просто перенаправляет файл в поток программы stdin.
Но если по какой-то причине вам нужен способ только для оболочки, то этого достаточно:
$ while IFS= read -r line || [ -n "$line" ]; do printf "%s " "$line" ; done < file
My name is nick rock and i live by the sea shore.
Вы также можете повторить подстановку команды без кавычек:
echo $(<infile)
можно использовать эту командную строку, это - улучшение @Sergiv Kolodyazhnyy, которые печатают \n
в правильном месте
while IFS= read -r line || [ -n "$line" ]; do printf "%s " "$line" ; printf "\n" ; done < test.txt
(извините, что не смог прокомментировать),
Вот некоторые опции:
использование awk
, с разделителем записей сброса (иначе 'режим абзаца') и разделитель полей по умолчанию
awk -vRS= '{$1=$1} 1' file
My name is nick rock and i live by the sea shore.
использование xargs
без явной команды
$ xargs < file
My name is nick rock and i live by the sea shore.
использование fmt
от GNU coreutils:
$ fmt file
My name is nick rock and i live by the sea shore.