linux 将多行数据合并为一行

需求说明:

在一些情况下需要将一个文件中的多行数据合并到一行中输出,便于阅读等
示例:将如下内容修改为 a,b,c,d,e

[root@node01 ~]# cat test.txt 
a
b
c
d
e

解决方法:

tr 命令
[root@node01 ~]# cat test.txt | tr '\n' ',' | sed 's/,$/ /'
a,b,c,d,e 

命令解析:
tr '\n' ','		将换行替换为 ,(逗号)
sed 's/,$/ /'	将最后一个 ,(逗号)替换为空
xargs 命令

xargs命令能够处理从标准输入或管道符输入的数据,并将其转换成命令参数,也可以将单行或多行输入的文本转换成其他格式。
xargs命令默认接收的信息中,空格是默认定界符,所以可以接收包含换行和空白的内容。

[root@node01 ~]# cat test.txt | xargs 
a b c d e
awk命令
awk '{printf "%s,", $1}' | sed 's/,$//'

printf命令的使用格式:

printf format, item1, item2, ...

printf 要点:

  1. printfprint 命令的最大不同是,printf 需要指定 format
  2. format 用于指定后面的每个 item 的输出格式;
  3. printf 语句不会自动打印换行符,需要添加

format 格式的指示符都以 % 开头,后跟一个字符;如下:

参数说明
%c显示第一个参数的第一个字符
%d, %i十进制整数
%e, %E科学计数法显示数值
%f显示浮点数
%g, %G以科学计数法的格式或浮点数的格式显示数值
%s显示字符串
%u无符号整数
%%显示%自身

修饰符:

参数说明
N显示宽度
-左对齐
+显示数值符号

示例:

[root@node01 ~]# cat test.txt 
a a1
b b1
c c1
d d1
e e1

awk '{printf "%c", $2}' test.txt 
abcde
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐