] как я могу вернуть вывод текста [дубликат]

На этот вопрос уже есть ответ здесь:

Это связано с вопросом, который я задал в переполнении, он остается без ответа, поэтому я хотя Я бы попробовал задать его в сегментах

Моя цель - вернуть специальную функцию \ 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
0
задан 29 May 2018 в 01:37

4 ответа

Вам нужна утилита

$ 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. 
0
ответ дан 29 October 2019 в 06:00

Вы также можете повторить подстановку команды без кавычек:

echo $(<infile)
1
ответ дан 29 October 2019 в 06:00

можно использовать эту командную строку, это - улучшение @Sergiv Kolodyazhnyy, которые печатают \n в правильном месте

while IFS= read -r line || [ -n "$line" ]; do printf "%s " "$line" ; printf "\n" ; done < test.txt 

(извините, что не смог прокомментировать),

1
ответ дан 29 October 2019 в 06:00

Вот некоторые опции:

  1. использование awk, с разделителем записей сброса (иначе 'режим абзаца') и разделитель полей по умолчанию

    awk -vRS= '{$1=$1} 1' file
    My name is nick rock and i live by the sea shore.
    
  2. использование xargs без явной команды

    $ xargs < file
    My name is nick rock and i live by the sea shore.
    
  3. использование fmt от GNU coreutils:

    $ fmt file
    My name is nick rock and i live by the sea shore.
    
0
ответ дан 29 October 2019 в 06:00

Другие вопросы по тегам:

Похожие вопросы: