我的文件包含以下内容:
id=123
time=1440367263
from=user1
version=none
final=none
id=124
time=1440367264
from=user2
version=none
final=none
etc...
然而,某些时候排在"来自"或者" final"缺少,这打破了序列。 例如:
id=123
time=1440367263
from=user1
version=none
final=none
id=124
time=1440367264
version=none
final=none
etc...
问题是,我试图从它生成单行,从示例1开始,我生成的输出如下:
id=123 time=1440367263 from=user1 version=none final=none
id=124 time=1440367264 from=user2 version=none final=none
如果缺少某些值,则会中断每行的顺序。 id,time,from,version,final
我如何维护这些顺序,如果有缺失值,请添加= 0值以保持序列?
任何帮助将不胜感激,
谢谢, AL
答案 0 :(得分:0)
这样的事情:
awk -F= '
function report() {
printf("id=%s time=%s from=%s version=%s final=%s\n",
a["id"], a["time"], a["from"], a["final"])
}
function reset() {
# Make sure the array a is empty
delete a
# Defining the fields in which we are interested
a["id"]=a["time"]=a["from"]=a["version"]=a["final"]=0
}
$1=="id" {
if ("id" in a) report()
reset()
}
$1 in a {a[$1]=$2} # Storing key + value
# if we are interested in a field
' file
编辑:重做,因为我现在了解要求:)
答案 1 :(得分:0)
我认为View itineraryYour Guest\s*<[^>]*>\s*([^\s<>]+(?:\s*[^\s<>])*)
始终存在,我在它之前注入换行符
id
输出
cat r |tr '\n' ' '|sed -r 's/(id=[^ ]+)/\n\1/g';echo