我有很多 .ini 文件,它们为各种项目配置某些属性。
我想首先在ini文件中过滤PROJECT_A,如果匹配,那么我想过滤第二个模式CONFIG_B。由于 CONFIG_B 是 PROJECT_A...X 的属性,我只想 grep 包含 PROJECT_A 设置的文件,并且 CONFIG_B 也存在。我知道这有点挑战性,但是如果我可以缩小同时存在 PROJECT_A 和 CONFIG_A 的 ini 文件,我可以手动将它们检查到最小列表。我有 1000 个这样的文件 :-(
典型的配置是这样的
[F-Project:PROJECT_A]
stream-window-start=0
stream-window-end=0
network-feed=LIVE:
test-config=pdl tf_dms_hiab
预期结果:-
file1.ini
proj:PROJECT_A
cfg1:CONFIG_A
cfg1:CONFIG_B
cfg1:CONFIG_C
proj:PROJECT_B
cfg1:CONFIG_A
cfg1:CONFIG_C
file2.ini
proj:PROJECT_X
cfg1:CONFIG_A
cfg1:CONFIG_B
cfg1:CONFIG_C
proj:PROJECT_Y
cfg1:CONFIG_B
cfg1:CONFIG_C
file3.ini
proj:PROJECT_A
cfg1:CONFIG_B
cfg1:CONFIG_C
proj:PROJECT_B
cfg1:CONFIG_A
结果:file1.ini、file3.ini
find . -name *.ini -exec grep -w PROJECT_A {} \; -print | grep ini -exec grep CONFIG_A {} \;
[proj:PROJECT_A]
./PLATFORM/build/integration/suites/System_Maintenance_Suite/ini/Test_0621_1.ini
因为我得到了上面的输出,所以我只过滤包含 .ini find 的行。-name *.ini -exec grep -w PROJECT_A {} \; -打印 | grep ini
./PLATFORM/build/integration/suites/System_Maintenance_Suite/ini/Test_0722_1.ini
./PLATFORM/build/integration/suites/System_Maintenance_Suite/ini/Test_0579_15.ini
./PLATFORM/build/integration/suites/System_Maintenance_Suite/ini/Test_0460_1.ini
我现在如何一次为模式 CONFIG_A grep 一行
我知道我可以将其写入文件并一次读取一行,但我想要一种有效的方法来做到这一点。
请帮助您的建议。