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...