gpt4 book ai didi

linux - 如何使用 sed 或 awk 正则表达式在 linux shell 中解析此数据

转载 作者:太空宇宙 更新时间:2023-11-04 11:27:59 24 4
gpt4 key购买 nike

我的文件里有这些数据

 65 ---
66 FieldType: Text
67 FieldName: STATE
68 FieldNameAlt: STATE
69 FieldFlags: 4194304
70 FieldJustification: Left
71 FieldMaxLength: 2
72 ---
73 FieldType: Text
74 FieldName: ZIP
75 FieldNameAlt: ZIP
76 FieldFlags: 0
77 FieldJustification: Left
78 ---
79 FieldType: Signature
80 FieldName: EMPLOYEE SIGNATURE
81 FieldNameAlt: EMPLOYEE SIGNATURE
82 FieldFlags: 0
83 FieldJustification: Left
84 ---
85 FieldType: Text
86 FieldName: Name_Last
87 FieldNameAlt: LAST
88 FieldFlags: 0
89 FieldValue: Billa
90 FieldJustification: Left
91 ---

我怎样才能使它成为一个数组并将其作为键值对存储在数组中

array['fieldtype']
array['fieldName']

对于所有对象。

我认为分隔符只是“---”,但我不知道该怎么做

最佳答案

这是使用 GNU awk 的一种方法。它将输入拆分为记录,然后可以对其进行处理。

parse.awk

BEGIN {
RS = " +[0-9]+ +---\n"
FS = "\n"
}

{
for(i=1; i<=NF; i++) { # for each line
sf = split($i, a, ":")
if(sf > 1) { # only accept successfully split lines
sub("^ +[0-9]+ +", "", a[1]) # trim key
sub("^ +", "", a[2]) # trim value
array[a[1]] = a[2] # save into array hash
}
}
}

{
print "Record: " NR
for(k in array) {
print k " -> " array[k]
}
print ""
}

将上面的内容保存到 parse.awk 中并像这样运行它:

awk -f parse.awk infile

其中 infile 包含您要解析的数据。输出:

Record: 1

Record: 2
FieldFlags -> 4194304
FieldNameAlt -> STATE
FieldJustification -> Left
FieldType -> Text
FieldMaxLength -> 2
FieldName -> STATE

Record: 3
FieldFlags -> 0
FieldNameAlt -> ZIP
FieldJustification -> Left
FieldType -> Text
FieldMaxLength -> 2
FieldName -> ZIP

Record: 4
FieldFlags -> 0
FieldNameAlt -> EMPLOYEE SIGNATURE
FieldJustification -> Left
FieldType -> Signature
FieldMaxLength -> 2
FieldName -> EMPLOYEE SIGNATURE

Record: 5
FieldFlags -> 0
FieldNameAlt -> LAST
FieldJustification -> Left
FieldType -> Text
FieldMaxLength -> 2
FieldValue -> Billa
FieldName -> Name_Last

关于linux - 如何使用 sed 或 awk 正则表达式在 linux shell 中解析此数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13340277/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com