问个脚本问题

问个脚本问题

目前已假设将某文件夹内所有含有"#ifdef 某关键字"列表包含路径和行号输出到文本ifdef.txt中,现在欲让另一个脚本根据该列表中的关键字段"#if 某关键字"之前的路径找到该字段所在文件,对该文件进行处理.

疑问1:如何将txt文本中每行冒号前的关键字读入并设置为一个变量,依行读取,每读取一次更改该变量一次(即export "变量"="当前行列表的路径"),bash一次test.sh,请问如何实现?

疑问2:
#ifdef ~#endif之间包含#else的段如何修改,修改逻辑请看另一帖,谢谢      
莫明其妙, 看不懂在说什么       
[QUOTE=foo;571218]莫明其妙, 看不懂在说什么 [/QUOTE]
To michaelzhang:

  • 发帖请突出主题
  • 发布一个新主题时请将问题描述清楚, 不要期望别人在回答你的问题之前先要浏览你以前发过的 N 多其他主题/帖子
  • 如果没有必要, 不要发布新的主题
  • 建议先看看本版置顶的几个帖子
      
例如:test.c位于/home/michaelzhang/123/test.c
test1.c位于/home/michaelzhang/123/test1.c
test2.c位于/home/michaelzhang/123/test2.c
test2.c位于/home/michaelzhang/123/456/test2.c

脚本main.sh位于/home/michaelzhang/main.sh
main.sh的一个子脚本为grep -rn "ifdef KEYBORD" 123 >> list.txt
这样list.txt中便包含123目录下所有包含"ifdef KEYBORD"行的列表
那么如何逐行调取"list.txt每行中的路径"设置为某个变量

如list.txt为
/home/michaelzhang/123/test.c:28:#ifdef KEYBORD
/home/michaelzhang/123/test1.c:27:#ifdef KEYBORD
/home/michaelzhang/123/456/test2.c:35:#ifdef KEYBORD

如何将变量a依次定义为/home/michaelzhang/123,/home/michaelzhang/123/456
并将变量b定义为该行"#ifdef 关键字"的关键字,谢谢      
复制内容到剪贴板
代码:
[0 No.537 huanlf@huanlf ~/tmp]$ sed 's/\:.*#ifdef//' list.txt
/home/michaelzhang/123/test.c KEYBORD
/home/michaelzhang/123/test1.c KEYBORD
/home/michaelzhang/123/456/test2.c KEYBORD

[0 No.538 huanlf@huanlf ~/tmp]$ sed 's/\:.*#ifdef//' list.txt | while read a b; do echo "a --> $a  b--> $b"; done
a --> /home/michaelzhang/123/test.c  b--> KEYBORD
a --> /home/michaelzhang/123/test1.c  b--> KEYBORD
a --> /home/michaelzhang/123/456/test2.c  b--> KEYBORD

[0 No.539 huanlf@huanlf ~/tmp]$
自己改改 while 里的代码就好了      
谢谢超级斑竹哈哈