- 论坛徽章:
- 0
|
请问如何抽取特征字的下一行?
我想肯定有更简单的方法,请赐教
#本程序将按给定的字符串在一文件中将其前后若干行删除
#在h80机器上测试通过,对原有10万行的文本文件,删除其中8万行,
#每个特征串删除前后共4行,即共有2万个指定字符串需删除,用时6分钟
cp comlog021211 abab
# M 前M行
# N 后N行
# string1 指定字符串
M=3
N=0
string1="aaaaaaaaaaaaa"
# count 为每次向下走的步数
count=`expr $M + $N + 1`
count_ini=0
eval grep -n $string1 abab | awk -F ":" '{print $1}' > acac
#为了删除最后一行,在后在加一行
count_tmp=`tail -1 acac`
echo $count_tmp >> acac
#为bbb,pre赋值
count_tmp=`head -1 acac`
bbb=$count_tmp
pre=`expr $count_tmp - $count`
while read -r aaa
do
ccc=`expr $pre + $count`
if [ $aaa != $ccc ]
then
CCC=`expr $bbb - $count_ini - $M`
DDD=`expr $pre - $count_ini + $N`
eval sed '${CCC},${DDD}d' abab > adad
count_ini=`expr $count_ini + $DDD - $CCC + 1`
cp adad abab
bbb=$aaa
fi
pre=$aaa
done < acac
|
|