- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试从 EVA 获取数据二进制数据库,其中字段由一些特殊符号分隔。到目前为止,我已成功将日期转换为以下格式的类似 XML 的文本文件。请注意字段的顺序如何变化,并且并非所有字段都是必需的。
<251>id1<230><223>author1<228><215>title1<223><230>year1<225><232>location1<226>
<251>id2<230><223>author2<228><230>year2<225><232>location2<226><215>title2<223>
<251>id3<230><230>year2<225><232>location2<226><215>title2<223>
每一行都是单独的条目,对于每一行我都想得到类似的东西
251=id1
223=author1
等等
现在我正在努力解析其中的数据。我通常使用爆炸函数并定义分隔符,但我不能在这里这样做,因为那样我会丢失某个子字符串属于哪个字段的信息。
也许我应该提到,最后我想生成一个 CSV 文件,所以也许有一种方法可以直接从我的文本文件解析它,跳过单独解析每个数据的冗余过程,然后以另一种格式再次合并它.
最佳答案
像这样吗?
$ cat tst.awk
BEGIN {
FS="[<>]+"
OFS="="
}
{
for (i=2;i<NF;i+=3) {
print $i, $(i+1)
}
print ""
}
$ awk -f tst.awk file
251=id1
223=author1
215=title1
230=year1
232=location1
251=id2
223=author2
230=year2
232=location2
215=title2
251=id3
230=year2
232=location2
215=title2
重新阅读您的问题后,这可能更接近您真正想要的:
$ cat tst.awk
BEGIN { FS="[<>]+"; OFS="," }
{
for (i=2;i<NF;i+=3) {
if (!seenName[$i]++) {
names[++numNames] = $i
}
n2v[NR,$i] = $(i+1)
}
}
END {
for (nameNr=1; nameNr<=numNames; nameNr++) {
printf "%s%s", names[nameNr], (nameNr<numNames?OFS:ORS)
}
for (recNr=1; recNr<=NR; recNr++) {
for (nameNr=1; nameNr<=numNames; nameNr++) {
name = names[nameNr]
printf "%s%s", n2v[recNr,name], (nameNr<numNames?OFS:ORS)
}
}
}
$
$ awk -f tst.awk file
251,223,215,230,232
id1,author1,title1,year1,location1
id2,author2,title2,year2,location2
id3,,title2,year2,location2
如果没有,请更新您的问题,以根据您发布的输入显示您想要的实际输出。
关于java - 解析EVA格式的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27208040/
这个问题是关于 evas_object_image_data_set 的使用函数。 比如说,我有一些 RGBA 格式的像素数组。我对其进行转换,使其成为 ARGB,适合 Evas 图像对象。 接下来我
任何人都可以帮助我纠正错误:BORdbg70.exe BORdbg70.dll“内部错误 EVA 1528”。这个错误的原因是什么?我该如何解决这个问题。 参见 here如何设置远程调试 sessio
我正在尝试编写一个小应用程序,以了解 evas 如何与 X11 配合使用。我在文档中没有找到完整的示例,只有我尝试使用的一些部分。这是代码: #include #include #include
我对 Frama-C 18.0 版(Argon)的行为有点困惑。 给定以下程序: #include #include /*@ requires order: min <= max; ass
以下面的 C 代码为例。 struct foo_t { int bar; }; int my_entry_point(const struct foo_t *foo) { return
我不知道为什么下面的代码不起作用!但是如果我将 var eva = function(){alert("hello");} 更改为 function eva() {alert("hello");},它
在https://stackoverflow.com/a/57116260/946226我学会了如何验证在缓冲区(由开始和结束指针给定)上运行的函数 foo 确实只从缓冲区中读取,而是创建一个具有代表
我正在尝试在函数中插入断言。这是我所做的: void foo(int a) { //@ assert a == 1; } void main() { foo(1); foo(2);
我找到的最接近的答案可能与 Eva 插件的 -absolute-valid-range 有关,但真的是这样吗?我是否必须想出读/写 ACSL 谓词来执行虚拟读/写? 示例代码: #include #
每当我尝试使用我的 gitlab ci 构建我的 Angular 应用程序时,我都会收到以下错误: 我也尝试过使用 npm ci,因为那是一种更简洁的方式,但它给出了相同的错误,但也适用于 types
我是一名优秀的程序员,十分优秀!