shell 字串出現的行數

來源:互聯網
上載者:User

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

#!/bin/bashrm -rf ret.txttotal=`wc -l $1 | awk '{print $1}'`echo "total = $total"num=1while read linedo    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.txtdone < $1cat ret.txt

執行指令碼命令:

./catline.sh    str2.txt   str.txt


運行結果如下:

total = 4yyy2:yyynum2 = 212 - 1 = 1xxx1:xxxnum2 = 121 - 2 = -1wwwnull num2 = 434 - 3 = 1zzz3:zzznum2 = 343 - 4 = -1yyy=1xxx=-1www=1zzz=-1
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.