我如何返回文本的输出

我如何返回文本的输出

这与我在 overflow 中提出的一个问题有关,它仍然没有答案,所以我想尝试分段提问

我的目标是返回特殊的 \n 函数,如果我要运行

echo -e "My name is \nnick rock and i \nlive by the sea shore." > file

然后当我 cat 那个文件时你会得到类似这样的信息

My name is
nick rock and i
live by the sea shore.

我想做的是反转 \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

答案1

你可以使用这个命令行,它是@Sergiv Kolodyazhnyy 的改进,它可以\n在正确的位置打印

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

(抱歉无法评论)

答案2

您还可以回显不带引号的命令替换:

echo $(<infile)

答案3

你正在寻找的是

$ tr  '\n' ' ' < file
My name is  nick rock and i  live by the sea shore. 

tr实用程序用于翻译字符集,其中 SET1 中只有一个字符\n,SET2 中有一个空格。至于< file,它只是将文件重定向到程序的标准输入流中。

但是如果由于某种原因你需要一种仅限 shell 的方式,那么这就足够了:

$ 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. 

答案4

以下是一些选项:

  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. 使用fmtGNU coreutils:

    $ fmt file
    My name is nick rock and i live by the sea shore.
    

相关内容