0

我有一组相当大的 CSV 文件需要解析。其中大部分都非常简单,但是我有一些带有嵌入对象的“组”对象,我需要正确提取这些对象。

该文件看起来像这样

Test_GroupA,Group,-,-,-,-,NodeA,,-,
,,,,,,NodeB,,,
,,,,,,NodeC,,,
,,,,,,NodeD,,,
,,,,,,NodeE,,,
Test_GroupB,Group,-,-,-,-,NodeA,,-,
,,,,,,NodeB,,,
,,,,,,NodeC,,,
,,,,,,NodeX,,,
,,,,,,NodeE,,,
,,,,,,NodeF,,,

所以,正如你所看到的,我需要一些类似的东西:

    awk -F"[,|]" '{if ($2=="Group")
then - pseudo code->
print "create group",$1
print "add member in $7 to group found in $1 of first row"
continue until you reach next $2=="Group"), then loop 

这让我非常困惑:)

编辑:: 似乎很多值有些虚假,并且在它们为空白时包含“-”,而不仅仅是 ,,

就像是

    sed 's/\,\-\,/\,\,/g' 

我认为应该替换它们,但是我认为我需要一个前导通配符。

新示例:

grp-ext-test-test,Group,-,-,-,-,Net_10.10.10.10,,-,
,,,,,,Net_10.101.10.10,,,
,,,,,,ws-ext-test-10.102,,,
,,,,,,ws-ext-test-10.103,,,
,,,,,,ws-ext-test-10.104,,,
,,,,,,ws-ext-test-10.105,,,
,,,,,,ws-ext-test-10.106,,,
,,,,,,ws-ext-test-10.107,,,
,,,,,,ws-ext-test-10.108,,,
,,,,,,ws-ext-test-10.108,,,

在其上运行新字符串只会产生:

create group grp-ext-test-test
4

1 回答 1

1

您可以尝试这样的事情并根据需要进行调整..

awk -F, '$2=="Group"{g=$1; print "create group",g}{print "add " $7 " to " g}' file

输出:

create group Test_GroupA
add NodeA to Test_GroupA
add NodeB to Test_GroupA
add NodeC to Test_GroupA
add NodeD to Test_GroupA
add NodeE to Test_GroupA
create group Test_GroupB
add NodeA to Test_GroupB
add NodeB to Test_GroupB
add NodeC to Test_GroupB
add NodeX to Test_GroupB
add NodeE to Test_GroupB
add NodeF to Test_GroupB

---edit--- 要检查 $7 的内容是否有效,您可以尝试以下操作:

awk -F, '$2=="Group"{ g=$1; print "create group",g } $7!="-"{print "add " $7 " to " g}' file
于 2013-04-01T16:36:18.253 回答