这与我在 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
以下是一些选项:
使用
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.