shell 字串出現的行數

2021-08-27 07:49:40 字數 1983 閱讀 9708

1 查詢字串所在的行號

grep -n "***" str.txt

# -n 列印字元 「***」 在檔案 「str.txt」 所在的行數字首

示例:str.txt

***yyyzzz

***輸入查詢命令:grep -n "***" str.txt

結果如下:

1:***

4:***

行號1,4在前,匹配字串「***」在後,兩者之間用冒號 「:」 隔開

2 查詢字串首次匹配的行號

grep -n "***" str.txt | head -1

結果如下:

1:***

同理,查詢最後一次匹配的行號

grep -n "***" str.txt | tail -1

結果如下:

4:***

查詢字串第二次匹配的行號

grep -n "***" str.txt | head -2 | tail -1 # 先取出前兩行,然後取最後一行

結果如下:

4:***

3 提取字串所在的行號

grep -n "***" str.txt |

cut -d ":" -f 1

先查詢字串 「***」 所在的全部行號,然後利用 cut 命令分割「:」字元,提取第乙個字段,即行號

結果如下:14

提取首次匹配的行號

grep -n "***" str.txt |

head -1

|cut -d ":" -f 1

結果如下:

14 比較兩次字串行號變化幅度

兩個檔案內容: str.txt 和 str2.txt

str.txt

***yyyzzz

***str2.txt

yyy***

wwwzzz

比較行號指令碼

catline.sh

#!/bin/bash

rm -rf ret.txt

total=`wc -l $1 | awk ''`

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"

fiecho $num

change=`expr $num2 - $num`

echo "$num2 - $num = $change"

num=`expr $num + 1`

echo "$line=$change" >> ret.txt

done < $1

cat ret.txt

執行指令碼命令:

./catline.sh str2.txt str.txt

執行結果如下:

total = 4

yyy2:yyy

num2 = 2

12 - 1 = 1

***1:***

num2 = 1

21 - 2 = -1

wwwnull num2 = 4

34 - 3 = 1

zzz3:zzz

num2 = 3

43 - 4 = -1

yyy=1

***=-1

www=1

zzz=-1

shell查詢某字串在某檔案中出現行數

有的時候,我們需要分析日誌來排查錯誤,但是日誌檔案特別大,開啟肯定是很慢的,也是沒法接受的,我們需要的是快速定位錯誤出現的位置,並定向取出錯誤資訊。快速定位某個字串在某檔案中出現的行數,可以使用 linux中grep命令 預設情況,grep命令只會輸出匹配的字串所在的行,如下 要想同時輸出行號,可以...

shell查詢某字串在某檔案中出現行數

一 簡介 有的時候,我們需要分析日誌來排查錯誤,但是日誌檔案特別大,開啟肯定是很慢的,也是沒法接受的,我們需要的是快速定位錯誤出現的位置,並定向取出錯誤資訊。快速定位某個字串在某檔案中出現的行數,可以使用 linux中grep命令 預設情況,grep命令只會輸出匹配的字串所在的行,如下 要想同時輸出...

grep c 統計檔案中字串出現的行數

分析日誌時,有時會需要統計某個方法出現的次數,這時就要用到grep c,如下命令 grep c key word file1 file2 file3 返回file1 count1 file2 count2 file3 count3 即依次返回每個檔案中key word出現的行數 與之類似的 grep...