使用bash命令对结构化文件进行排序

米歇尔·韦格穆勒

我需要对LDIF文件进行排序,其中几行属于父行。

例子

dn: 2

attr1: b

attr2: a

attr1: a

attr1: c



dn: 3

attr2: a

attr1: c

attr1: b

attr1: a



dn: 1

attr1: a

attr1: c

attr1: b

attr2: a

到这个

dn: 1

attr1: a

attr1: b

attr1: c

attr2: a


dn: 2

attr1: a

attr1: b

attr1: c

attr2: a


dn: 3

attr1: a

attr1: b

attr1: c

attr2: a

因此,对所有以dn开头的父行进行排序,在所有attrx之下进行排序,如果attrx具有多个值,则还将对其进行排序。我已经使用读取行完成了此操作,但是这需要花费数小时才能处理庞大的文件。有更快的方法来执行bash命令吗?

属性值始终只占一行。如果有多个值,则每个取一行。没有行是base64编码的。

埃米利奥·加拉拉加(Emilio Galarraga)

使用您的示例文件

awk 'BEGIN {RS="\n\n\n";FS="\n\n";OFS="*";ORS=""} {print $1,$2,$3,$4,$5}' file |awk -F'*' '{for(i=1; i<=NF; i++) c[i]=$i; n=asort(c); for (i=1; i<=n; i++) printf "%s%s*", c[i], (i<n?OFS:RS); delete c}' |sed 's/^*//' |awk -F'*' '{print $5"*"$1"*"$2"*"$3"*"$4}' |sort |awk -F'*' 'BEGIN{OFS="\n\n";ORS="\n\n\n"} {print $1,$2,$3,$4,$5;}'

将每个文本块转换为行,并使用“ *”分隔字段

awk 'BEGIN {RS="\n\n\n";FS="\n\n";OFS="*";ORS=""} {print $1,$2,$3,$4,$5}' file dn: 2*attr1: b*attr2: a*attr1: a*attr1: c dn: 3*attr2: a*attr1: c*attr1: b*attr1: a dn: 1*attr1: a*attr1: c*attr1: b*attr2: a

对行中的字段进行排序,并使用“ *”分隔字段

awk 'BEGIN {RS="\n\n\n";FS="\n\n";OFS="*";ORS=""} {print $1,$2,$3,$4,$5}' file |awk -F'*' '{for(i=1; i<=NF; i++) c[i]=$i; n=asort(c); for (i=1; i<=n; i++) printf "%s%s*", c[i], (i<n?OFS:RS); delete c}' |sed 's/^*//'

attr1: a *attr1: b *attr1: c *attr2: a *dn: 2 attr1: a *attr1: b *attr1: c *attr2: a *dn: 3 attr1: a *attr1: b *attr1: c *attr2: a *dn: 1

重新排列行中的fiesld,以首先“打印dn:x”

awk 'BEGIN {RS="\n\n\n";FS="\n\n";OFS="*";ORS=""} {print $1,$2,$3,$4,$5}' file |awk -F'*' '{for(i=1; i<=NF; i++) c[i]=$i; n=asort(c); for (i=1; i<=n; i++) printf "%s%s*", c[i], (i<n?OFS:RS); delete c}' |sed 's/^*//' |awk -F'*' '{print $5"*"$1"*"$2"*"$3"*"$4}'

dn: 2*attr1: a *attr1: b *attr1: c *attr2: a dn: 3*attr1: a *attr1: b *attr1: c *attr2: a dn: 1*attr1: a *attr1: b *attr1: c *attr2: a

按第一列或第一列对行进行排序

awk 'BEGIN {RS="\n\n\n";FS="\n\n";OFS="*";ORS=""} {print $1,$2,$3,$4,$5}' file |awk -F'*' '{for(i=1; i<=NF; i++) c[i]=$i; n=asort(c); for (i=1; i<=n; i++) printf "%s%s*", c[i], (i<n?OFS:RS); delete c}' |sed 's/^*//' |awk -F'*' '{print $5"*"$1"*"$2"*"$3"*"$4}' |sort

dn: 1*attr1: a *attr1: b *attr1: c *attr2: a dn: 2*attr1: a *attr1: b *attr1: c *attr2: a dn: 3*attr1: a *attr1: b *attr1: c *attr2: a

将行转换为一列并插入空行

awk 'BEGIN {RS="\n\n\n";FS="\n\n";OFS="*";ORS=""} {print $1,$2,$3,$4,$5}' file |awk -F'*' '{for(i=1; i<=NF; i++) c[i]=$i; n=asort(c); for (i=1; i<=n; i++) printf "%s%s*", c[i], (i<n?OFS:RS); delete c}' |sed 's/^*//' |awk -F'*' '{print $5"*"$1"*"$2"*"$3"*"$4}' |sort |awk -F'*' 'BEGIN{OFS="\n\n";ORS="\n\n\n"} {print $1,$2,$3,$4,$5;}'

dn: 1

attr1: a

attr1: b

attr1: c

attr2: a


dn: 2

attr1: a

attr1: b

attr1: c

attr2: a


dn: 3

attr1: a

attr1: b

attr1: c

attr2: a

我知道我使用了太多步骤。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用numpy对复杂的结构化数据进行排序?

来自分类Dev

对结构化数组进行排序的性能(numpy)

来自分类Dev

使用Redis进行Spark结构化流式动态查找

来自分类Dev

使用(。)或→运算符在C中进行结构化

来自分类Dev

使用sed编辑非结构化文件

来自分类Dev

使用 Pandas 加载(双)结构化 txt 文件

来自分类Dev

根据字段名称值对numpy结构化数组中的值进行排序

来自分类Dev

我可以对numpy结构化数组中的多个字段进行排序吗?

来自分类Dev

根据字段名称值对numpy结构化数组中的值进行排序

来自分类Dev

Bash - 编辑结构化文本

来自分类Dev

读取Java中的结构化文件

来自分类Dev

VTK结构化点文件

来自分类Dev

遍历结构化文件的 2 列

来自分类Dev

Bash:按字节区分大小写的排序命令或使用python sort命令对文本文件进行排序

来自分类Dev

在平面文件中对字段进行分组和结构化数据的设计模式

来自分类Dev

TypeScript何时使用结构化类型?

来自分类Dev

使用结构化绑定的“反思”

来自分类Dev

如何使用带有Rxjava的MVP进行结构化和改造以从Observables中获取数据?

来自分类Dev

查询开始时,使用结构化流从Kafka主题的开头进行读取

来自分类Dev

使用REST API对Firestore查询进行结构化查询的多处条件

来自分类Dev

使用Google CSE在页面地图结构化数据中搜索整个属性以进行过滤

来自分类Dev

排序numpy结构化和记录数组非常慢

来自分类Dev

结构化表单以将$ _POST变量排序为数组

来自分类Dev

排序numpy结构化和记录数组非常慢

来自分类Dev

使用dictwriter并使用python将非结构化数据写入csv文件

来自分类Dev

我应该使用哪个函数将非结构化文本文件读入R?

来自分类Dev

如何使用T-SQL在SQL Server中输出非结构化文件?

来自分类Dev

结构化输出

来自分类Dev

转换interface {}以json编码进行结构化

Related 相关文章

  1. 1

    如何使用numpy对复杂的结构化数据进行排序?

  2. 2

    对结构化数组进行排序的性能(numpy)

  3. 3

    使用Redis进行Spark结构化流式动态查找

  4. 4

    使用(。)或→运算符在C中进行结构化

  5. 5

    使用sed编辑非结构化文件

  6. 6

    使用 Pandas 加载(双)结构化 txt 文件

  7. 7

    根据字段名称值对numpy结构化数组中的值进行排序

  8. 8

    我可以对numpy结构化数组中的多个字段进行排序吗?

  9. 9

    根据字段名称值对numpy结构化数组中的值进行排序

  10. 10

    Bash - 编辑结构化文本

  11. 11

    读取Java中的结构化文件

  12. 12

    VTK结构化点文件

  13. 13

    遍历结构化文件的 2 列

  14. 14

    Bash:按字节区分大小写的排序命令或使用python sort命令对文本文件进行排序

  15. 15

    在平面文件中对字段进行分组和结构化数据的设计模式

  16. 16

    TypeScript何时使用结构化类型?

  17. 17

    使用结构化绑定的“反思”

  18. 18

    如何使用带有Rxjava的MVP进行结构化和改造以从Observables中获取数据?

  19. 19

    查询开始时,使用结构化流从Kafka主题的开头进行读取

  20. 20

    使用REST API对Firestore查询进行结构化查询的多处条件

  21. 21

    使用Google CSE在页面地图结构化数据中搜索整个属性以进行过滤

  22. 22

    排序numpy结构化和记录数组非常慢

  23. 23

    结构化表单以将$ _POST变量排序为数组

  24. 24

    排序numpy结构化和记录数组非常慢

  25. 25

    使用dictwriter并使用python将非结构化数据写入csv文件

  26. 26

    我应该使用哪个函数将非结构化文本文件读入R?

  27. 27

    如何使用T-SQL在SQL Server中输出非结构化文件?

  28. 28

    结构化输出

  29. 29

    转换interface {}以json编码进行结构化

热门标签

归档