超實用,Linux中查看文本的小技巧

来源:https://www.cnblogs.com/javazhiyin/archive/2019/08/12/11338084.html
-Advertisement-
Play Games

日常開發中,我們經常需要在伺服器上進行各種文本,日誌的查看操作,本文主要對常用的文本,日誌查看技巧進行了一番總結和歸納,方便大家收藏起來後續查看使用: tail命令查看日誌信息 實時監控日誌: 實時監控10行日誌信息: 查看日誌尾部的最後100行日誌信息: 查看日誌100行之後的日誌信息: head ...


日常開發中,我們經常需要在伺服器上進行各種文本,日誌的查看操作,本文主要對常用的文本,日誌查看技巧進行了一番總結和歸納,方便大家收藏起來後續查看使用:

tail命令查看日誌信息

實時監控日誌:

tail -f filename

 

實時監控10行日誌信息:

tail -10f filename

 

查看日誌尾部的最後100行日誌信息:

tail -n 100 filename

 

查看日誌100行之後的日誌信息:

tail -n +100 filename

 

head命令查看文本信息

查看文本開始的頭100行信息:

head -n 100 filename

 

查看文本最後100行信息以上的內容

head -n -100 filename

 

cat命令查看文本信息

查看全部文本內容

cat filename

 

查看文本的中間某些行範圍之間的內容,例如說查看文本文件100-120行之間的內容:

cat -n filename |tail -n +100|head -n 20

 

不過使用個人不是太喜歡使用這種命令來進行文本的定位查看,因為查看起來過於麻煩,文章下邊會有更加簡便的命令操作。

tac查看文本信息


和cat命令有點相反,cat命令更多的是從頭部往尾部的順序展現文本內容,而tac命令正好是從文本的尾部往頭部展現日誌內容

tac filename

 

例如說,我們通過cat命令和tac命令同時來查看一段相同的內容:

超實用,Linux中查看文本的小技巧


通過不同命令來展示文本,會發現文本的內容順序有所相反。

 

搜索文本內容

grep是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹配的行列印出來。

grep命令的常用方式:

在多個文件中查找:

grep "match_pattern" file_1 file_2 file_3 ...

 

標記匹配顏色 --color=auto 選項:

grep "match_pattern" file_name --color=auto 

//【這裡的color項可以根據文檔說明進行選擇always,never,auto三種】

 

輸出除之外的所有行 -v 選項:

grep -v "match_pattern" file_name

 

使用正則表達式 -E 選項:

grep -E "[1-9]+"

 

只輸出匹配到的內容選項:

grep -o -E "[a-z]+."  line

 

統計文件或者文本中包含匹配字元串的行數 -c 選項:

grep -c "text" file_name

 

輸出包含匹配字元串的行數 -n 選項:

grep "text" -n file_name

 

在瞭解了grep命令能完成的功能點之後,我們可以在實際工作中靈活運用。

有些時候我們也會遇到一些希望查看某個時間段日誌信息的需要,這個時候可以利用grep這條命令來實現這個功能,例如說希望查看2019-08-06 22點這一個小時以內的日誌信息,那麼可以輸入以下命令:

 grep '2019-08-06 22' filename

 

超實用,Linux中查看文本的小技巧

這樣可以快速定位到你所希望查看的信息範圍。

由於grep命令是可以接收standard input的數據,因此我們通常可以藉助管道命令符“ | ”的幫助,在一些標準輸出進行中進行查找操作。


例如說,先將文件的內容讀取出來,然後藉助管道的幫助將內容轉發給grep來進行內容過濾,如下邊的這段命令:

cat log.file |grep -n '2019-08-06 22:43'

 

超實用,Linux中查看文本的小技巧


除了使用grep命令之外,也可以使用sed命令來實現相應的效果。

sed是一種非互動式的編輯器,sed會逐行處理文件(或輸入),並將結果發送到屏幕。

可能對於新手來說,講概念還不如直接來幾個實操案例更為直接。

sed命令的常用方式:

只列印文件的第一行內容

sed -n '1p'  filename

 

查看文件的第一行到第十行之間的內容

sed -n '1,10p' filename

 

刪除第一行文本信息

sed '1d' filename

 

將文本裡面的某些字元串進行替換

sed 's/希望替換的內容/被替換的內容/g'
例如:sed 's/1/one /g' filename 將1替換為one

 

在瞭解了sed命令的一些基礎用法之後,我們可以在實際的工作場景中多次運用,從而強化自己對於sed命令的理解。

例如說,通過sed命令來進行日期範圍的指定,例如說查看2019-08-06 22:43-22:44之間的日誌記錄:

sed -n '/2019-08-06 22:43/,/2019-08-06 22:44/p' filename

 

超實用,Linux中查看文本的小技巧

 


上邊有說到使用head和tail命令一起來實現對於日誌文件的某段內容查看,但是這樣的操作實在是有點麻煩,不妨可以嘗試使用sed命令來進行操作。


例如說,查看日誌的第1-20行內容:

 nl log.file | sed -n '1,10p'

 

超實用,Linux中查看文本的小技巧

 

利用more命令進行翻頁查看

如果說希望查看的日誌文件過大,那麼可以通過使用more命令來進行分頁查找,例如說設定每一頁展示10條數據信息:

more -10 filename

 

超實用,Linux中查看文本的小技巧


通過使用more命令可以查看到每一頁展示的數據,同時通過敲空格鍵會進行下一頁的跳轉。同時在視窗中也會顯示當前所閱讀的文本內容的基礎進度。

說了那麼多,我們不妨進行一些模擬的操作場景吧:

查看日誌最後一次出現關鍵字'test'的日誌記錄

 grep 'test' -A 10  log.file | tail -n 11

 

這裡需要瞭解到grep命令的幾個參數含義:

  • grep ‘name’ -A 10 顯示匹配內容和後面的10行
  • grep ‘name’ -B 10 顯示匹配內容和前面的10行
  • grep ‘name’ -C 10 顯示匹配內容和前後面的10行

tail -n 11命令則是將當前顯示的10行內容以及匹配的那一行內容展示出現

簡單統計一份日誌裡面出現‘test’關鍵字的行數

相應命令:

grep 'test' ./log.file |wc -l

 

這裡我們可以先將文本的內容進行輸出到標準輸出中,然後藉助管道將數據信息傳給wc命令進行統計。

wc命令常用的幾個參數

-l 匹配的行數
-w 匹配的字數
-m 匹配的字元數目

linux裡面對於文本信息的查看技巧實在是有太多了,遠遠不局限於我在文中所提及的這些,因此在實際的工作中我們還可以多多將有助於自己提升工作效率的技巧進行歸納和總結。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 番茄工作法: 專註於某一段時間,減少打斷,提高時間的感知和掌控。 25min工作+5min休息 周期:4x(25+5)+20 VBS代碼實現如下: 為適應強迫症增加vds定時器調用如下: ...
  • 問題: nginx啟動或者reload的時候,會對proxy_pass後面的功能變數名稱進行DNS解析,如果解析失敗,啟動就會失敗或者reload失敗。 我們是to B的產品,客戶的環境可能是不通公網的,因此不能使用公網DNS服務,進而導致在ng啟動的時候,對proxy_pass後緊跟功能變數名稱的dns解析失敗, ...
  • Windows RDP 訪問 Fedor 遠程桌面需要使用 Xrdp 開源工具。 安裝完成後需要註銷掉當前用戶,否則登錄失敗。 ...
  • 環境 CentOS: 7.x 下載 下載地址 :http://www.clamav.net/downloads,使用目前最新版本為:clamav 0.101.3 使用 wget 下載 安裝 1. 解壓 2. 安裝依賴 3. 編譯安裝 4. 添加用戶 配置 1. 創建日誌目錄和病毒庫目錄 2. 創建日 ...
  • Ubuntu系統中會存在多個 Python 的可執行二進位文件。一般Ubuntu預設的Python版本都為2.x, 如何改變Python的預設版本呢?下麵來一起看看吧。 你可以按照以下方法使用 ls 命令來查看你的系統中都有那些 Python 的二進位文件可供使用。 像我的有2.7、3、3.5版本 ...
  • 在linux的命令模式下使用ctrl組合鍵能讓操作更便捷。 ctrl + k : 剪切游標及其後邊的內容; ctrl + u : 剪切游標之前的內容; ctrl + y : 在游標處粘貼上兩個命令,粘貼方式和被剪切方式相同; ctrl + c : 結束正在運行的程式或命令; ctrl + d : 結... ...
  • 提到 Linux,作為程式員來說一定都不陌生。但如果說到「懂」Linux,可能就沒有那麼多人有把握了。到底用 Linux 離懂 Linux 有多遠?如果決定學習 Linux,應該怎麼開始?要學到什麼程度?懂一點 Linux,對於程式員有什麼價值?通過馬蜂窩內容中心高級研發總監李鴻的這次內部分享,你會 ...
  • 轉自:linux sed命令詳解 簡介 sed 是一種線上編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩衝區中,稱為“模式空間”(pattern space),接著用sed命令處理緩衝區中的內容,處理完成後,把緩衝區的內容送往屏幕。接著處理下一行,這樣不斷重覆,直到文件末尾。文件內容 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...