shell命令之grep
2016-03-02 13:16
302 查看
1 查询字符串所在的行号
grep
-n "xxx"
str.txt
# -n 打印字符 “xxx” 在文件 “str.txt”
所在的行数前缀
示例:
str.txt
xxx
yyy
zzz
xxx
输入查找命令: grep -n
"xxx" str.txt
结果如下:
1:xxx
4:xxx
行号1,4在前,匹配字符串“xxx”在后,两者之间用冒号 “:” 隔开
2 查找字符串首次匹配的行号
grep
-n "xxx"
str.txt | head -1
结果如下:
1:xxx
同理,查找最后一次匹配的行号
grep
-n "xxx"
str.txt | tail -1
结果如下:
4:xxx
查找字符串第二次匹配的行号
grep
-n "xxx"
str.txt | head -2 | tail
-1
# 先取出前两行,然后取最后一行
结果如下:
4:xxx
3 提取字符串所在的行号
grep
-n "xxx"
str.txt
| cut
-d ":" -f
1
先查询字符串 “xxx” 所在的全部行号,然后利用 cut 命令分割“:”字符,提取第一个字段,即行号
结果如下:
1
4
提取首次匹配的行号
grep
-n "xxx"
str.txt
| head
-1 | cut -d
":" -f
1
结果如下:
1
4 比较两次字符串行号变化幅度
两个文件内容: str.txt 和 str2.txt
str.txt
xxx
yyy
zzz
xxx
str2.txt
yyy
xxx
www
zzz
比较行号脚本
catline.sh
[html] view
plain copy
print?
#!/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
str2.txt
str.txt
运行结果如下:
[css] view
plain copy
print?
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
grep
-n "xxx"
str.txt
# -n 打印字符 “xxx” 在文件 “str.txt”
所在的行数前缀
示例:
str.txt
xxx
yyy
zzz
xxx
输入查找命令: grep -n
"xxx" str.txt
结果如下:
1:xxx
4:xxx
行号1,4在前,匹配字符串“xxx”在后,两者之间用冒号 “:” 隔开
2 查找字符串首次匹配的行号
grep
-n "xxx"
str.txt | head -1
结果如下:
1:xxx
同理,查找最后一次匹配的行号
grep
-n "xxx"
str.txt | tail -1
结果如下:
4:xxx
查找字符串第二次匹配的行号
grep
-n "xxx"
str.txt | head -2 | tail
-1
# 先取出前两行,然后取最后一行
结果如下:
4:xxx
3 提取字符串所在的行号
grep
-n "xxx"
str.txt
| cut
-d ":" -f
1
先查询字符串 “xxx” 所在的全部行号,然后利用 cut 命令分割“:”字符,提取第一个字段,即行号
结果如下:
1
4
提取首次匹配的行号
grep
-n "xxx"
str.txt
| head
-1 | cut -d
":" -f
1
结果如下:
1
4 比较两次字符串行号变化幅度
两个文件内容: str.txt 和 str2.txt
str.txt
xxx
yyy
zzz
xxx
str2.txt
yyy
xxx
www
zzz
比较行号脚本
catline.sh
[html] view
plain copy
print?
#!/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
str2.txt
str.txt
运行结果如下:
[css] view
plain copy
print?
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
相关文章推荐
- Shell脚本中的运算
- shell命令——札记
- Bash Shell的使用环境
- Shell脚本学习入门(一)
- hbase shell基础和常用命令详解(转)
- android: shell 命令
- Shell编程中Shift的用法
- shell 包含其他shell脚本的方法
- shell for 与if多条件实例
- shell变量
- 排序算法之shell排序
- PowerShell 抓取网络日志
- PowerShell 抓取网络日志
- Linux shell script
- 学习心得之bash script
- shell 编程光速入门与实战
- Ad Hoc Distributed Queries / xp_cmdshell 的启用与关闭
- shell变量
- 鸟哥的Linux私房菜-----10、学习Bash
- Query in Java as in Mongo shell 【Jongo】