bash中,我想匹配文件的某行,匹配到该行以后,将该行和下面的几行输出到另外一个文件,怎么实现? 10
cat$1|whilereadlinedoecho$line|grep"EXEC"if[$?-eq0];thenecho$line>>2fidone比如该行没有分号,该行...
cat $1 |while read line
do
echo $line|grep "EXEC"
if [ $? -eq 0 ] ;then
echo $line >>2
fi
done
比如该行没有分号,该行下面的第四行有分号。我想输出这五行到另一个文件。下面的4行怎么也输出到文件2中? 展开
do
echo $line|grep "EXEC"
if [ $? -eq 0 ] ;then
echo $line >>2
fi
done
比如该行没有分号,该行下面的第四行有分号。我想输出这五行到另一个文件。下面的4行怎么也输出到文件2中? 展开
1个回答
展开全部
用sed循环匹配输出比较简便,一行代码搞定。
sed -n '/EXEC/{:a;p;/;/q;n;ba}' $1 >2
稍作说明:
-n 禁止自动打印,只有通过命令p打印。
/EXEC/ 匹配含有EXEC的行。
:a 设置跳转标签a
/;/q 匹配含有分号的行,匹配到了通过命令q退出sed,不再继续向下处理文件。
n 读取下一行
ba 跳转到标签a处向后执行,跟:a组合使用构成循环语句。
用你的方法也可以做:
isFound=0
cat $1 | while read line
do
if [ $isFound -eq 0 ]; then
echo "$line" | grep "EXEC" >/dev/null 2>&1
if [ $? -eq 0 ]; then
isFound=1
echo "$line" >>2
fi
else
echo "$line" >>2
echo "$line" | grep ";" >/dev/null 2>&1
[ $? -eq 0 ] && break
fi
done
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询