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

red*_*015 0 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
Run Code Online (Sandbox Code Playgroud)

我想看到输出如下

Employee_id 101 Dept_id 10 Salary 2000
Employee_id 102 Dept_id 20 Salary 3000
Employee_id 103 Dept_id 30 Salary 3000
Run Code Online (Sandbox Code Playgroud)

Tom*_*ech 6

使用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
Run Code Online (Sandbox Code Playgroud)

记录分隔符RS未设置,因此每个块都被视为记录.$1=$1导致awk触摸每条记录,以便将其重新格式化为由空格分隔的字段.将1在年底是一个速记{print}.