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 要点:
printf
与print
命令的最大不同是,printf
需要指定format
;format
用于指定后面的每个item
的输出格式;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