我有一个文件,我需要以某种方式格式化。文件中的记录具有以下格式;
Record
One
Record
Two每个记录用空行分隔,每个字段用换行符分隔。我需要以下格式的记录;
Record:One
Record:Two这是我目前所拥有的;
#!/bin/bash
cat File.txt | awk '{ RS=""; FS="\n"; OFS=":"; ORS="\n" } {print $1,$2 }'这个代码给出了这个输出;
:ecord
:one甚至和我要找的东西都不太接近。这能在一条线上完成吗?
发布于 2019-10-22 06:05:17
在perl中:
perl -l -p -e 'BEGIN {$/=""; $\="\n\n"}; s/\n/:/mg' input -l使perl能够自动处理记录结束。-p在脚本周围放置一个隐式while ... print循环,以便它能够自动读取、处理并打印每个记录(类似于awk)。$/)设置为$/=""空,告诉D11以段落模式读取输入(一个或多个空行分隔每个记录)。$\="\n\n"将输出记录分隔符设置为两个换行符,以便用空行分隔记录。:。这适用于每个记录中的任意数量的字段。记录中的每一行都是单独的字段。
示例输出:
$ perl -lpe 'BEGIN {$/=""; $\="\n\n"}; s/\n/:/mg' input
Record:One
Record:Two注意:在Record:Two之后有一个空行。
发布于 2019-10-22 06:04:56
尝尝这个,
awk NF=NF RS="" FS="\n" OFS=":" ORS="\n" File.txt
Record:One
Record:Twohttps://unix.stackexchange.com/questions/548017
复制相似问题