linux - 如何将行格式化为列,连接每一行直到使用 AWK 遇到空行

标签 linux shell awk

如果sample.txt有如下数据

Employee_id 101
Dept_id 10
Salary 2000

Employee_id 102
Dept_id 20
Salary 3000

Employee_id 103
Dept_id 30
Salary 3000

我希望看到如下输出

Employee_id 101 Dept_id 10 Salary 2000
Employee_id 102 Dept_id 20 Salary 3000
Employee_id 103 Dept_id 30 Salary 3000

最佳答案

使用 awk 的简单方法:

$ awk -v RS= '{$1=$1}1' file
Employee_id 101 Dept_id 10 Salary 2000
Employee_id 102 Dept_id 20 Salary 3000
Employee_id 103 Dept_id 30 Salary 3000

记录分隔符 RS 未设置,因此每个 block 都被视为一条记录。 $1=$1 使 awk 接触每条记录,以便将其重新格式化为由空格分隔的字段。末尾的 1{print} 的简写。

关于linux - 如何将行格式化为列,连接每一行直到使用 AWK 遇到空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30379099/

相关文章:

regex - 在文件的每一行上运行 curl 命令并从结果中获取数据

bash - sed/awk - 如何删除少于 3 列的行

c - linux中c程序中调用 "lp filename"命令是什么?

linux - 如何防止目录浏览?

linux - 在BASH中,我们可以赋值并显示变量_(下划线)中的值吗?

android - adb shell su 有效,但 adb root 无效

linux - 格式化 top 的批处理模式输出以进行绘图/绘图

c++ - 读取 DRM EDID 文件时大小始终为零

linux - 如何知道我是否有性欲?

如果没有文件,linux shell脚本从stdin读取