linux字符串出现的行号,shell 字符串出现的行数

示例:

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

#!/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

cat ret.txt

执行脚本命令:

./catline.sh    str2.txt   str.txt

运行结果如下:

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值