当前位置: 技术问答>linux和unix
一段shell程序的编写
来源: 互联网 发布时间:2015-07-05
本文导语: 一个文件中是由下面的一些记录组成: &M ACNO=123 OLDACNO=456 NAME=NJ ITM=801 BAL=532 &M 如果字段ITM=0并且BAL=0就把这一条记录删除掉。 请高手用Unix shell来帮我写段程序,接受的参数是文件名。 谢谢! |...
一个文件中是由下面的一些记录组成:
&M
ACNO=123
OLDACNO=456
NAME=NJ
ITM=801
BAL=532
&M
如果字段ITM=0并且BAL=0就把这一条记录删除掉。
请高手用Unix shell来帮我写段程序,接受的参数是文件名。
谢谢!
&M
ACNO=123
OLDACNO=456
NAME=NJ
ITM=801
BAL=532
&M
如果字段ITM=0并且BAL=0就把这一条记录删除掉。
请高手用Unix shell来帮我写段程序,接受的参数是文件名。
谢谢!
|
删除两个&M之间的记录:
创建一个文件:catsample.sed
内容:
/&M/{
N
N
N
N
N
/ITM=0nBAL=0/d
}
使用方法:
sed -f catsample.sed temp.txt
(temp.txt为参数文件名)
创建一个文件:catsample.sed
内容:
/&M/{
N
N
N
N
N
/ITM=0nBAL=0/d
}
使用方法:
sed -f catsample.sed temp.txt
(temp.txt为参数文件名)
|
#!/bin/bash
sed 's/nITM=0n/n' $1>temp123.txt
sed 's/nBAL=0n/n' temp123.txt>$1
rm temp123.txt
sed 's/nITM=0n/n' $1>temp123.txt
sed 's/nBAL=0n/n' temp123.txt>$1
rm temp123.txt
|
对不起,应该如此:
#!/bin/bash
sed 's/nITM=0n/n/' $1>temp123.txt
sed 's/nBAL=0n/n/' temp123.txt>$1
rm temp123.txt
#!/bin/bash
sed 's/nITM=0n/n/' $1>temp123.txt
sed 's/nBAL=0n/n/' temp123.txt>$1
rm temp123.txt
|
原理就是两个回车符之间的该记录换成一个回车符,如果不符合你的要求,可在其上直接修改你的匹配内容。将转换的内容存成临时文件。再将临时文件换第二个匹配串,转存为原来文件名即可。
|
-f是命令的选项,执行sed的脚本文件