关于linux sed命令的问题,删除多行,一行包含两个关键词,删除含两个关键词的行
<packagename="aaa"codePath="/bbb"flags="1"ts="77000"version="8"sharedUserId="10014"><...
<package name="aaa" codePath="/bbb" flags="1" ts="77000" version="8" sharedUserId="10014">
<sigs count="1">
<cert index="4">
</sigs>
</package>
请问我要删除第一行含package和10014,一直到最后含有/package的所有行,sed命令怎么使用啊,万分感谢啊 展开
<sigs count="1">
<cert index="4">
</sigs>
</package>
请问我要删除第一行含package和10014,一直到最后含有/package的所有行,sed命令怎么使用啊,万分感谢啊 展开
展开全部
用sed一句话,我想不出来怎么写。写了个脚本,应该可以实现你要的功能。
如果你确定<package 10014 到/package> 这个保证是5行的话。
#!/bin/bash
filename=file
LINES=`grep -n 'sharedUserId="10014"' $filename | wc -l`
while [[ $LINES -ne 0 ]]
do
STARTnum=(`grep -n 'sharedUserId="10014"' $filename | awk -F":" '{print $1}'`)
for i in ${STARTnum[0]}
do
j=`expr $i + 4`
sed -i ''$i','$j'd' file
done
((LINES--))
done
#######################
你试试 sed -i '/^<package.*10014/,/^<\/package/d'
如果你确定<package 10014 到/package> 这个保证是5行的话。
#!/bin/bash
filename=file
LINES=`grep -n 'sharedUserId="10014"' $filename | wc -l`
while [[ $LINES -ne 0 ]]
do
STARTnum=(`grep -n 'sharedUserId="10014"' $filename | awk -F":" '{print $1}'`)
for i in ${STARTnum[0]}
do
j=`expr $i + 4`
sed -i ''$i','$j'd' file
done
((LINES--))
done
#######################
你试试 sed -i '/^<package.*10014/,/^<\/package/d'
展开全部
如果<package .*10014.*>与</package>中不含子<package></package>就可以用
sed -i '/^<package.*10014/,/^<\/package>$/d' fileName
如果含就必须先找出你删除结束行第m行,然后
sed -i '/^<package.*10014/,$md' fileName
m获取方法比较多,看你文件的格式怎样的
sed -i '/^<package.*10014/,/^<\/package>$/d' fileName
如果含就必须先找出你删除结束行第m行,然后
sed -i '/^<package.*10014/,$md' fileName
m获取方法比较多,看你文件的格式怎样的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
nms掏白蒂YPX呵呵393油蠢萄
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询