Chr*_*our 187
使用tr '\n' ' '
所有换行符转换为空格:
$ grep pattern file | tr '\n' ' '
Run Code Online (Sandbox Code Playgroud)
注意:grep
读取文件,cat
连接文件.不要cat file | grep
!
编辑:
tr
只能处理单字符翻译.您可以使用awk
更改输出记录分隔符,如:
$ grep pattern file | awk '{print}' ORS='" '
Run Code Online (Sandbox Code Playgroud)
这会改变:
one
two
three
Run Code Online (Sandbox Code Playgroud)
至:
one" two" three"
Run Code Online (Sandbox Code Playgroud)
blu*_*dge 57
管道输出xargs
将连接每行输出到带有空格的单行:
grep pattern file | xargs
Run Code Online (Sandbox Code Playgroud)
或任何命令,例如.ls | xargs
.xargs
输出的默认限制为~4096个字符,但可以使用例如增加.xargs -s 8192
.
小智 47
在没有引号的bash echo中删除回车符,制表符和多个空格
echo $(cat file)
Run Code Online (Sandbox Code Playgroud)
seh*_*ehe 18
这可能是你想要的
cat file | grep pattern | paste -sd' '
Run Code Online (Sandbox Code Playgroud)
关于你的编辑,我不确定这意味着什么,也许这个?
cat file | grep pattern | paste -sd'~' | sed -e 's/~/" "/g'
Run Code Online (Sandbox Code Playgroud)
(这假定~
不会发生file
)
Ric*_*mes 11
这是一个生成由逗号分隔的输出的示例。您可以用您需要的任何分隔符替换逗号。
cat <<EOD | xargs | sed 's/ /,/g'
> 1
> 2
> 3
> 4
> 5
> EOD
Run Code Online (Sandbox Code Playgroud)
产生:
1,2,3,4,5
Run Code Online (Sandbox Code Playgroud)
当我们想用空格替换换行符 时:\n
xargs < file
Run Code Online (Sandbox Code Playgroud)
xargs
每行的字符数和所有字符的总数有自己的限制,但我们可以增加它们。可以通过运行此命令找到详细信息:xargs --show-limits
当然也可以在手册中找到:man xargs
当我们想要用另一个恰好一个字符替换一个字符时:
tr '\n' ' ' < file
Run Code Online (Sandbox Code Playgroud)
当我们想要用多个字符替换一个字符时:
tr '\n' '~' < file | sed s/~/many_characters/g
Run Code Online (Sandbox Code Playgroud)
首先,我们将换行符替换\n
为波形符~
(或选择文本中不存在的另一个唯一字符),然后用任何其他字符 ( many_characters
) 替换波形符字符,并对每个波形符 (flag ) 执行此操作g
。
这是另一种简单的方法,使用awk
:
# cat > file.txt
a
b
c
# cat file.txt | awk '{ printf("%s ", $0) }'
a b c
Run Code Online (Sandbox Code Playgroud)
另外,如果您的文件有列,这提供了一种仅连接某些列的简单方法:
# cat > cols.txt
a b c
d e f
# cat cols.txt | awk '{ printf("%s ", $2) }'
b e
Run Code Online (Sandbox Code Playgroud)
我喜欢这个xargs
解决方案,但如果不折叠空间很重要,那么可以这样做:
sed ':b;N;$!bb;s/\n/ /g'
Run Code Online (Sandbox Code Playgroud)
这将替换空格的换行符,而不像以前那样替换最后一行终止符tr '\n' ' '
。
这还允许您使用除空格之外的其他连接字符串,例如逗号等,这是xargs
不能执行的操作:
$ seq 1 5 | sed ':b;N;$!bb;s/\n/,/g'
1,2,3,4,5
Run Code Online (Sandbox Code Playgroud)