如何用shell实现如下功能?

chengwei02 2007-09-13 05:03:33
文件a.txt中
IMPORTS=osfs dscr bai clock dsp env hkbd hi2c l1t l1a l1s hwlgpm \
melody pcc rtke sim trace mis sl3 dpws sma sr hbat \
dbat dsl embtatflash tatflash tatmain baseband eeprom dfda dsm ipstack \
wlayer wctr tattop hec dirf hirf datamng igui hfda hau \
hacd spdevlayer iguii ftm tftp heci smcproc smc7816 smc \
l23csn1 libdmm env mattests \
devadec devcgu devcp15 devcrt0 devcsl devdmau \
devebi devextint devfci devgeac devgpio deviic \
deviis devintc devjtag devkbs devpdcu devpio \
devpwm devrtc devsc devscon devsctu devscc \
devtbu devuart devusb devusim devwakeup \
devspi devwdru kid3api kidglobal hwltra \
embtatmain embtattop embmattests l23rrm urtk libgfl libost librema \
osit tstimaging hwlaud hwlvf stdioproc uoslib \
ucommo uswift hntf tffsal hmmc bootloader net upvi mca

文件b.txt中
/I "l23mma\modules\l23cmm\incl"
/I "l23mma\modules\l23gmm\incl"
/I "l23mma\modules\l23mmm\incl"
/I "mattests\modules\embmattests\incl"
/I "psaccessory\modules\hacd\incl"
/I "psapplismp\modules\smc\incl"
/I "psaudio\modules\hau\incl"
/I "psaudio\modules\melody\incl"
/I "psbattery\modules\dbat\incl"
/I "psbattery\modules\hbat\incl"
/I "psdef\modules\pcc\incl"
/I "psenv\modules\env\incl"
/I "psfile\modules\fmfvmi\incl"
/I "psfile\modules\fmmemory\incl"
/I "psfile\modules\mountmemory\incl"
/I "psfile\modules\osfs\incl"
/I "psflash\modules\avm\incl"
/I "psflash\modules\cryptlock\incl"
/I "psflash\modules\dfda\incl"
/I "psflash\modules\eeprom\incl"
/I "psflash\modules\fvmint\incl"
/I "psflash\modules\hfda\incl"
/I "psi2c\modules\hi2c\incl"
/I "pskid\modules\devadec\incl"
/I "pskid\modules\devcgu\incl"
/I "pskid\modules\devcsl\incl"
/I "pskid\modules\devdmau\incl"

从文件a.txt中每读一个单词(IMPORTS=后空格分隔),在b.txt中寻找包含该单词的行,如果有这样的行,将它提取出来
存入c.txt中,判断是否存在这样的行,主要是比对\incl之前的那个单词是否为要找的单词

不知道这样的功能能否用shell来实现,如何实现?
...全文
188 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
chengwei02 2007-09-14
  • 打赏
  • 举报
回复
试了,都试了,你有IM吗,我加你,谢谢
msn/qq: flyingeagle@9stars.org/112908676
iambic 2007-09-14
  • 打赏
  • 举报
回复
a => a.txt
b => b.txt

cat a.txt ¦ sed ':a;N;$!ba;s/\\\n/\ /g ' ¦ grep '^IMPORTS= ' ¦ sed 's/^IMPORTS=// ' ¦ sed 's/\s\+$// ' ¦ sed 's/\s\+/\n/g ' ¦ while read i; do grep "\\\\$i\\\\incl" b.txt; done

再试下……
chengwei02 2007-09-14
  • 打赏
  • 举报
回复
我建了个a.txt文件包含:
文件a.txt中
IMPORTS=osfs dscr bai clock dsp env hkbd hi2c l1t l1a l1s hwlgpm \
melody pcc rtke sim trace mis sl3 dpws sma sr hbat \
dbat dsl embtatflash tatflash tatmain baseband eeprom dfda dsm ipstack \
wlayer wctr tattop hec dirf hirf datamng igui hfda hau \
hacd spdevlayer iguii ftm tftp heci smcproc smc7816 smc \
l23csn1 libdmm env mattests \
devadec devcgu devcp15 devcrt0 devcsl devdmau \
devebi devextint devfci devgeac devgpio deviic \
deviis devintc devjtag devkbs devpdcu devpio \
devpwm devrtc devsc devscon devsctu devscc \
devtbu devuart devusb devusim devwakeup \
devspi devwdru kid3api kidglobal hwltra \
embtatmain embtattop embmattests l23rrm urtk libgfl libost librema \
osit tstimaging hwlaud hwlvf stdioproc uoslib \
ucommo uswift hntf tffsal hmmc bootloader net upvi mca

文件b.txt中
/I "l23mma\modules\l23cmm\incl"
/I "l23mma\modules\l23gmm\incl"
/I "l23mma\modules\l23mmm\incl"
/I "mattests\modules\embmattests\incl"
/I "psaccessory\modules\hacd\incl"
/I "psapplismp\modules\smc\incl"
/I "psaudio\modules\hau\incl"
/I "psaudio\modules\melody\incl"
/I "psbattery\modules\dbat\incl"
/I "psbattery\modules\hbat\incl"
/I "psdef\modules\pcc\incl"
/I "psenv\modules\env\incl"
/I "psfile\modules\fmfvmi\incl"
/I "psfile\modules\fmmemory\incl"
/I "psfile\modules\mountmemory\incl"
/I "psfile\modules\osfs\incl"
/I "psflash\modules\avm\incl"
/I "psflash\modules\cryptlock\incl"
/I "psflash\modules\dfda\incl"
/I "psflash\modules\eeprom\incl"
/I "psflash\modules\fvmint\incl"
/I "psflash\modules\hfda\incl"
/I "psi2c\modules\hi2c\incl"
/I "pskid\modules\devadec\incl"
/I "pskid\modules\devcgu\incl"
/I "pskid\modules\devcsl\incl"
/I "pskid\modules\devdmau\incl"

然后,建了个filter.sh
cat a ¦ sed ':a;N;$!ba;s/\\\n/\ /g ' ¦ grep '^IMPORTS= ' ¦ sed 's/^IMPORTS=// ' ¦ sed 's/\s\+$// ' ¦ sed 's/\s\+/\n/g ' ¦ while read i; do grep "\\\\$i\\\\incl" b; done

运行,没有任何文件变化,也没有生成新的文件
我是想从b文件中提取出a文件中包含的模块头文件路径,另存一份,没有实现这个功能啊
wx红杉树 2007-09-14
  • 打赏
  • 举报
回复
cat a ¦ sed ':a;N;$!ba;s/\\\n/\ /g ' ¦ grep '^IMPORTS= ' ¦ sed 's/^IMPORTS=// ' ¦ sed 's/\s\+$// ' ¦ sed 's/\s\+/\n/g ' ¦ while read i; do grep "\\\\$i\\\\incl" b; done
可以啊
你怎么试的啊?
chengwei02 2007-09-14
  • 打赏
  • 举报
回复
我试了,好像没有成功
iambic 2007-09-14
  • 打赏
  • 举报
回复
我是说浏览器在CSDN自动给shell代码加颜色的功能。和这个问题没关系的……你直接试试这个就是了:

cat a ¦ sed ':a;N;$!ba;s/\\\n/\ /g ' ¦ grep '^IMPORTS= ' ¦ sed 's/^IMPORTS=// ' ¦ sed 's/\s\+$// ' ¦ sed 's/\s\+/\n/g ' ¦ while read i; do grep "\\\\$i\\\\incl" b; done
chengwei02 2007-09-14
  • 打赏
  • 举报
回复
我没说用浏览器啊:)
chengwei02 2007-09-14
  • 打赏
  • 举报
回复
谢谢,看来是空格闹的,我已经试成了
chengwei02 2007-09-14
  • 打赏
  • 举报
回复
你可以用cygwin试啊,我先试试你的,谢谢啊:)
iambic 2007-09-14
  • 打赏
  • 举报
回复
我现在没有linux。

对了,CSDN上直接贴代码会多很多空格,我再试下:

[code=BatchFile]
cat a ¦ sed ':a;N;$!ba;s/\\\n/\ /g' ¦ grep '^IMPORTS=' ¦ sed 's/^IMPORTS=//' ¦ sed 's/\s\+$//' ¦ sed 's/\s\+/\n/g' ¦ while read i; do grep "\\\\$i\\\\incl" b; done
[/code]


你可以分步尝试,比如:

[code=BatchFile]
cat a ¦ sed ':a;N;$!ba;s/\\\n/\ /g' ¦ grep '^IMPORTS='
[/code]
应该可以把IMPORTS行拼在一起输出。

[code=BatchFile]
cat a ¦ sed ':a;N;$!ba;s/\\\n/\ /g' ¦ grep '^IMPORTS=' ¦ sed 's/^IMPORTS=//' ¦ sed 's/\s\+$//' ¦ sed 's/\s\+/\n/g'
[/code]
应该会把IMPORTS的单词分行输出。

iambic 2007-09-13
  • 打赏
  • 举报
回复
浏览器不能自动插入代码,再手动试下:
[code=Shell]cat a ¦ sed ':a;N;$!ba;s/\\\n/\ /g ' ¦ grep '^IMPORTS= ' ¦ sed 's/^IMPORTS=// ' ¦ sed 's/\s\+$// ' ¦ sed 's/\s\+/\n/g ' ¦ while read i; do grep "\\\\$i\\\\incl" b; done[/code]
iambic 2007-09-13
  • 打赏
  • 举报
回复
唉,水平太差,写个循环吧:

cat a | sed ':a;N;$!ba;s/\\\n/\ /g' | grep '^IMPORTS=' | sed 's/^IMPORTS=//' | sed 's/\s\+$//' | sed 's/\s\+/\n/g' | while read i; do grep "\\\\$i\\\\incl" b; done


xyzxyz1111做这个还是比较厉害的。
Aylazhang 2007-09-13
  • 打赏
  • 举报
回复
起码得写个awk脚本或者perl脚本

37,721

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧