1 查询字符串所在的行号
grep
示例:
str.txt
xxx
yyy
zzz
xxx
输入查找命令:
结果如下:
1:xxx
4:xxx
行号1,4在前,匹配字符串“xxx”在后,两者之间用冒号 “:” 隔开
2 查找字符串首次匹配的行号
grep
结果如下:
1:xxx
同理,查找最后一次匹配的行号
grep
结果如下:
4:xxx
查找字符串第二次匹配的行号
grep
结果如下:
4:xxx
3 提取字符串所在的行号
grep
先查询字符串 “xxx” 所在的全部行号,然后利用 cut 命令分割“:”字符,提取第一个字段,即行号
结果如下:
1
4
提取首次匹配的行号
grep
结果如下:
1
4 比较两次字符串行号变化幅度
两个文件内容: str.txt 和 str2.txt
str.txt
xxx
yyy
zzz
xxx
str2.txt
yyy
xxx
www
zzz
比较行号脚本
catline.sh
- #!/bin/bash
-
- rm
-rf ret.txt -
- total=`wc
-l $1 | awk '{print $1}'` - echo
"total = $total" -
- num=1
- while
read line - do
-
echo $line -
-
ret=`grep -n $line $2 | head -1` -
echo $ret -
-
if [ -z $ret ]; then -
num2=$total -
echo "null num2 = $total" -
else -
num2=`echo $ret | cut -d ":" -f 1` -
echo "num2 = $num2" -
fi -
-
echo $num -
change=`expr $num2 - $num` -
echo "$num2 - $num = $change" -
-
num=`expr $num + 1` -
-
echo "$line=$change" >> ret.txt - done
<</SPAN> $1 -
-
- cat
ret.txt
执行脚本命令:
./catline.sh
运行结果如下:
- total
= 4 - yyy
- 2:yyy
- num2
= 2 - 1
- 2
- 1 = 1 - xxx
- 1:xxx
- num2
= 1 - 2
- 1
- 2 = -1 - www
-
- null
num2 = 4 - 3
- 4
- 3 = 1 - zzz
- 3:zzz
- num2
= 3 - 4
- 3
- 4 = -1 - yyy=1
- xxx=-1
- www=1
- zzz=-1
优秀博文可参考: http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2856896.html