我有一个文件,其中的记录由 | 分隔。有几个换行符,第一行的一部分移动到第二行。如果我计算|的数量在特定的行中,它应该始终保持一致。如何识别哪一行有换行符,并将两行合并为一行,以便“|”的数量在每一行中始终保持一致?
文件如下所示:
DeptID|EmpFName|EmpLName|Salary
Engg|Sam|Le
wis|1000
Engg|Smith|Davis|2000
HR|Denis
|Lillie|1500
HR|Danny|Borr
inson|3000
IT|David|Letterman|2000
IT|John|Newman|3000
而我想计算'|'的数量在每一行。
在这种情况下,每一行应该有 3 个 '|'每个,但由于换行,情况并非如此,
我最终想要的输出是
DeptID|EmpFName|EmpLName|Salary
Engg|Sam|Lewis|1000
Engg|Smith|Davis|2000
HR|Denis|Lillie|1500
HR|Danny|Borrinson|3000
IT|David|Letterman|2000
IT|John|Newman|3000
awk 中的一个:
$ cat foo.awk
BEGIN { FS=OFS="|" } # set separators
NR==1 { nf=NF } # expect the field count to be correct on header record
NF<nf { # if NF less than on header record
while (NF<nf) { # and while NF < less than on header record
b=$0 # buffer too short record
getline # read next record
$0 = b $0 # catenate buffer and fresh record
}
} 1 # output
运行它:
$ awk -f foo.awk foo
DeptID|EmpFName|EmpLName|Salary
Engg|Sam|Lewis|1000
Engg|Smith|Davis|2000
HR|Denis|Lillie|1500
HR|Danny|Borrinson|3000
IT|David|Letterman|2000
IT|John|Newman|3000
如果记录增长太长则不检查。