我的标题有点混乱,因为我不知道如何用好的英语表达。
这是我的问题。我有一个这样格式化的平面文件:
: name1 field1-1: field2:value1-2 field3:"value1-3" field4:{"Value-1-4"}
: name2 field2-1: field2:"value2-2" field4:{"Value-2-4"} field3:Value2-3
: name3 field3-1: field3:{"Value-3-3"} field2:value3-2 field4:value3-4
所以你可以看到它不是一个很好的文件,因为字段没有以相同的顺序出现,它们有时可能具有不同类型的值,而且有时它们会丢失。原始文件也是 5 到 20 个字段长。
现在这就是我最终想要的:
: name1 field2:value1-2 field4:{"Value-1-4"}
: name2 field2:"value2-2" field4:{"Value-2-4"}
: name3 field2:value3-2 field4:value3-4
所以我知道最终文件中我想要的字段,并且我知道我希望它们出现的确切顺序。
我尝试了类似的东西
sed "s/(field1:.*)|(field2:.*)/\2\1/g"
我知道这不是正确的合成器,但它是为了可读性。但它不起作用,因为第一个匹配是唯一匹配发生的,而另一组无法匹配。
我想我想做的事情有很多awk
,但我真的不知道我该怎么做。我真的更喜欢使用bash
, sed
,但是如果我别无选择,我可以处理awk
一些grep
Perl
编辑:我可以举一个简单的例子,但真正的文件有不同的字段名称
晚安,谢谢