一段shell程序的编写

web_spider 2004-07-08 08:03:22
一个文件中是由下面的一些记录组成:
&M
ACNO=123
OLDACNO=456
NAME=NJ
ITM=801
BAL=532
&M
如果字段ITM=0并且BAL=0就把这一条记录删除掉。
请高手用Unix shell来帮我写段程序,接受的参数是文件名。
谢谢!
...全文
303 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
incept 2004-07-17
  • 打赏
  • 举报
回复
-f是命令的选项,执行sed的脚本文件
greencofee 2004-07-16
  • 打赏
  • 举报
回复
谢谢大家这么热心,我试着用了,可是不能实现这个功能。我不懂shell里面的语句, 例如上面的 sed -f 这句话我就不明白是什么意思?
我想实现的功能是就是先找到一个目录下的文件,然后查看里面的字段ITM=801和BAL=532是否等于0如果等于,就删除ITM=0前面的几句话,和 BAL=0后面的几句话,思路应该这样实现。问题就是怎么样取回这个文件里面的ITM和BAL字段并判断是否等于0,然后再怎样删除前后几句话。
web_spider 2004-07-11
  • 打赏
  • 举报
回复
我帮朋友问的问题,我把连接发给她了,
谢谢大家的热心
web_spider 2004-07-10
  • 打赏
  • 举报
回复
多谢yanedanny(丹尼 袁):
我看不懂shell编程,不知道你这是删除的是不是两个&M之间的这一断记录?
yi2001 2004-07-10
  • 打赏
  • 举报
回复
删除两个&M之间的记录:
创建一个文件:catsample.sed
内容:
/&M/{
N
N
N
N
N
/ITM=0\nBAL=0/d
}

使用方法:
sed -f catsample.sed temp.txt
(temp.txt为参数文件名)
yanedanny 2004-07-10
  • 打赏
  • 举报
回复
对不起,应该如此:
#!/bin/bash
sed 's/\nITM=0\n/\n/' $1>temp123.txt
sed 's/\nBAL=0\n/\n/' temp123.txt>$1
rm temp123.txt
yanedanny 2004-07-10
  • 打赏
  • 举报
回复
原理就是两个回车符之间的该记录换成一个回车符,如果不符合你的要求,可在其上直接修改你的匹配内容。将转换的内容存成临时文件。再将临时文件换第二个匹配串,转存为原来文件名即可。
yanedanny 2004-07-09
  • 打赏
  • 举报
回复
#!/bin/bash
sed 's/\nITM=0\n/\n' $1>temp123.txt
sed 's/\nBAL=0\n/\n' temp123.txt>$1
rm temp123.txt
web_spider 2004-07-08
  • 打赏
  • 举报
回复
用c shell或者b shell都可以,我以前从来没有用过shell来编写程序,请好心人帮忙了

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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