当前位置: 技术问答>linux和unix
请教高手:shell或sed相关问题——谢谢!!!
来源: 互联网 发布时间:2016-12-12
本文导语: /dataSourceSyncNotify**** **** **** ID=0123456**** **** uri=/dataSourceSyncNotify /dataSourceSyncNotify **** **** **** ID=0123457 **** uri=/dataSourceSyncNotify 我用grep -n "0123456" myfile得到标红(在文本里唯一)所在的行号,比如为5. 然后我如何根据这个行号...
/dataSourceSyncNotify****
****
****
ID=0123456****
****
uri=/dataSourceSyncNotify
/dataSourceSyncNotify
****
****
****
ID=0123457
****
uri=/dataSourceSyncNotify
我用grep -n "0123456" myfile得到标红(在文本里唯一)所在的行号,比如为5. 然后我如何根据这个行号得到它前后离它最近的即标绿的(在文本里不唯一)两行的行号呢?
谢谢!
****
****
ID=0123456****
****
uri=/dataSourceSyncNotify
/dataSourceSyncNotify
****
****
****
ID=0123457
****
uri=/dataSourceSyncNotify
我用grep -n "0123456" myfile得到标红(在文本里唯一)所在的行号,比如为5. 然后我如何根据这个行号得到它前后离它最近的即标绿的(在文本里不唯一)两行的行号呢?
谢谢!
|
版本不对,稍微改了下:
改了grep -q 在别人电脑上网,无法测试,见谅.....
#!/bin/bash
file_name='sed_test'
pattern_str='iamcc'
pattern_id='id=0808'
grep -n ${pattern_id} ${file_name}|while read line
do
i=`echo $line|awk -F: '{print $1}'`
#echo "${i} ok ! next"
temp=$((i-1))
while((temp>0))
do
if sed -n ${temp},1p $file_name|grep -q $pattern_str then
sed -n ${temp},${i}p $file_name
break
fi
temp=$(($temp-1))
done
temp=$((i+1))
sed -n ${temp},/${pattern_str}/p ${file_name}
done
改了grep -q 在别人电脑上网,无法测试,见谅.....
|
这里应该是这样(越改越不对了,Csdn也不让编辑)
if sed -n ${temp},1p $file_name|grep -q $pattern_str
then
sed -n ${temp},${i}p $file_name
break
fi