Linux三劍客詳解

一、Linux三劍客命令

命令示例:

1. grep -r "搜索詞" 目錄:搜索目錄下包含指定詞的文件,並輸出結果
2. awk '{print $1,$2}' 文件名:輸出文件中每行的第一、二列
3. sed 's/被替換詞/替換詞/g' 文件名:替換文件中的指定詞彙,並輸出修改後的結果

命令解釋:

1. grep:常用於文件搜索,主要用途是在指定目錄下搜索包含指定文本的文件,並輸出相關結果。
2. awk:Linux下的一個文本處理工具,主要用途是根據列的內容來進行一些處理,並輸出處理結果。
3. sed:是一個Linux下的流編輯器,主要用途是在輸入流中進行一些替換和編輯操作,並輸出修改後的結果。

這三個命令的功能組合,使得用戶在Linux下能更好地處理和管理文本文件、數據文件和程序文件。

二、Linux三劍客命令總結

Linux三劍客命令最經典且常用的就是grep、awk、sed,三者雖然各自有所側重,但都有很強的文本搜索、文本處理能力。除此之外,還有:

  • nc:是一款極為實用的 TCP/UDP 網絡工具,用於檢測遠程主機端口是否打開,遠程主機是否在線等等。
  • wget:是一個無需瀏覽器即可從網上下載文件的程序。
  • dd:Linux下的磁盤操作工具,可用於磁盤分區,製作鏡像等。
  • cat:通常用於顯示文件內容或者文件複製,支持多種選項。
  • find:用於在指定目錄及其子目錄下查找符合條件的文件,並可以執行某些操作。

三、Linux三劍客命令用法

下面以grep命令為例:

grep -r "搜索詞" 目錄

其中,-r表示遞歸搜索,”搜索詞”為要搜索的內容,目錄為搜索的起始目錄。

下面以awk命令為例:

awk '{print $1,$2}' 文件名

其中,'{print $1,$2}’表示要輸出文件中每行的第一、二列,文件名為需要處理的文件。

下面以sed命令為例:

sed 's/被替換詞/替換詞/g' 文件名

其中,’s/被替換詞/替換詞/g’表示將文件中所有的”被替換詞”都替換為”替換詞”,文件名為需要處理的文件。

四、Linux三劍客分享

以下是三位Linux三劍客的簡介和介紹:

  • grep:grep是一位全能型的搜索工具,在Linux下,他是很多人心目中的“常青樹”,即使在GUI時代,他仍然是命令行中最為強大、最為便捷的搜索命令之一。
  • awk:awk是一款專門用於文本處理的工具,用戶可以在awk中編寫腳本,並指定相關的動作,來對文本文件中的數據進行處理。
  • sed:sed是一款非常強大的流式文本編輯器,主要用於文件替換和編輯,在處理大文件時顯得尤其優秀。

五、Linux三劍客是什麼

Linux三劍客是大名鼎鼎的grep、sed、awk三個命令的別名組合。這三個命令是Unix中最為重要的文本處理工具之一,並且在Linux與Unix系統中被廣泛應用。三者結合使用,在處理文本、數據等文件時可以互相搭配使用,可以大大提高工作效率。

六、Linux三劍客的區別

grep、sed、awk三個命令在功能上都有差異,可以從以下幾個方面來比較它們之間的區別:

  • 搜索範圍不同:grep主要用於搜索某個目標文件的內容,sed可以操作整個文件或純文本流,awk則是擅長於處理文件或輸入過濾器的數據流。
  • 使用方法不同:grep需要用正則表達式進行搜索,sed則需要用sed腳本語言進行編輯,awk則需要用awk腳本進行處理。
  • 主要功能不同:grep主要用來搜索和列出包含某個特定文本的行,sed主要用來流式處理文本文件,awk主要用來處理純文本格式的數據。

七、Linux三劍客指令

下方列舉了三劍客常用的指令:

  • grep:
    grep “hello” a.txt:在a.txt文件中查找包含”hello”的行。
  • sed:
    sed ‘s/search_word/replace_word/’ file:將file中的search_word替換為replace_word。
  • awk:
    awk ‘{print $1}’ file:打印file中每一行的第一個字段。

八、Linux三劍客命令案例詳解

下面以實際案例來展示三劍客的具體用法。

1、grep案例:

搜索指定目錄中的內容

grep -r "Hello" /usr/share/doc

輸出結果如圖所示:

/usr/share/doc/bzr-2.6.0/doc/tutorial.txt:You can think of it as saying "hello" to Bazaar:
/usr/share/doc/README:Hello and welcome!
/usr/share/doc/libappindicator/README:// Hello?

2、awk案例:

處理日誌文件統計IP訪問量

awk '{print $1}' access.log | sort | uniq -c | sort -nr

分別解釋其中的命令:

  • awk ‘{print $1}’ access.log:提取日誌文件中的IP地址
  • sort:對IP地址進行排序
  • uniq -c:統計IP地址的數量
  • sort -nr:將結果排序並按照降序輸出

輸出結果如圖所示:

  1147 192.168.0.1
  1122 192.168.0.2
   917 192.168.0.3
   ...

3、sed案例:

將conf文件中的IP地址替換為本機IP

sed -i 's/\(Listen \)\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}/\1'"$(hostname -I | awk '{print $1}')"'/g' server.conf

分別解釋其中的命令:

  • -i:表示對原始文件直接進行修改
  • s/old/new/g:表示將文本中的old替換為new
  • \( , \)、[0-9]\{1,3\}、\{3\}:表示正則表達式匹配
  • $(hostname -I | awk ‘{print $1}’)):表示獲取本機的IP地址

九、Linux三劍客命令詳解

下面對三劍客的用法進行詳細介紹。

1、grep詳解

grep命令的常用選項:

  • -v:反向查找
  • -i:大小寫不敏感
  • -n:顯示匹配行所在的行號
  • -r:遞歸查找目錄下的文件
  • -l:列出匹配的文件名

2、awk詳解

awk命令語法如下:

awk 'pattern {action}'

常用的模式有以下幾種:

  • BEGIN:開始執行前的模式匹配
  • END:結束執行前的模式匹配
  • /{pattern}/:模式匹配

常用的動作有以下幾種:

  • {print}:默認打印整個行
  • {print $n}:打印第n個字段
  • {print “hello”}:打印指定的字符串

3、sed詳解

sed命令的常用選項:

  • -n:只輸出被編輯過的行(通常程序會將所有處理過的行都輸出)
  • -e sed_script:多點編輯,可以執行多個程序
  • -f script_file:直接從指定文件中讀取script

sed命令的常用動作:

  • a text:在當前行後添加一行文字
  • b label:跳轉到指定標籤(label)的命令,sed會接着從標籤下一行繼續執行
  • c text:替換行,刪除當前行,並在當前位置插入text
  • d:刪除當前行
  • i text:在當前行前插入一行文字

十、Linux三劍客面試題

以下是幾道與Linux三劍客相關的典型面試題:

1、grep的常用選項有哪些?

答案:-v、-i、-n、-r、-l。

2、awk中的模式和動作是什麼命令含義?

答案:模式用來和每一行的文本進行匹配,動作則是用來執行具體操作的。

3、sed命令的作用是什麼?

答案:sed是一個流編輯器,主要用於執行一些替換、刪除等編輯操作。

4、請舉出一例grep命令的應用場景。

答案:搜索指定目錄中某個文件或者文件夾下包含指定內容的文件,例如grep -r “hello” /usr/share/doc。

5、請舉出一例awk命令的應用場景。

答案:統計日誌文件中訪問最多的IP地址,例如awk ‘{print $1}’ access.log | sort | uniq -c | sort -nr。

6、請舉出一例sed命令的應用場景。

答案:將文件中的所有“hello”替換為“world”,例如sed ‘s/hello/world/g’ filename。

7、請簡述一下grep、awk、sed三者的區別。

答案:grep主要用於搜索文件內容,sed主要用於替換文本,awk主要用於數據切分和數據處理。

8、請簡述一下awk的語法結構。

原創文章,作者:BYMIA,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/316912.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
BYMIA的頭像BYMIA
上一篇 2025-01-09 12:15
下一篇 2025-01-09 12:15

相關推薦

  • Python編程三劍客——模塊、包、庫

    本文主要介紹Python編程三劍客:模塊、包、庫的概念、特點、用法,以及在實際編程中的實際應用,旨在幫助讀者更好地理解和應用Python編程。 一、模塊 1、概念:Python模塊…

    編程 2025-04-29
  • 如何在Linux中添加用戶並修改配置文件

    本文將從多個方面詳細介紹在Linux系統下如何添加新用戶並修改配置文件 一、添加新用戶 在Linux系統下創建新用戶非常簡單,只需使用adduser命令即可。使用以下命令添加新用戶…

    編程 2025-04-27
  • 如何解決linux jar包 invalid or corrupt jarfile問題

    對於許多開發人員和系統管理員在Linux環境下使用Java開發過程中遇到的一個常見的問題是 invalid or corrupt jarfile(無效或損壞的jar文件)錯誤。當您…

    編程 2025-04-27
  • 在Linux上安裝JRE並配置環境變量

    本文將從以下幾個方面為您詳細闡述如何在Linux系統上,通過自己賬戶安裝JRE,並且配置環境變量。 一、安裝JRE 在進行安裝前,我們需要下載JRE的安裝包並解壓,可以從官方網站下…

    編程 2025-04-27
  • GTKAM:Linux下的照片管理器

    GTKAM是用於Linux操作系統的一款照片管理器,它支持多種相機及存儲設備,並提供了一系列強大的工具,讓用戶可以方便地瀏覽、管理、編輯和導出照片。本文將從多個方面對GTKAM進行…

    編程 2025-04-27
  • Linux sync詳解

    一、sync概述 sync是Linux中一個非常重要的命令,它可以將文件系統緩存中的內容,強制寫入磁盤中。在執行sync之前,所有的文件系統更新將不會立即寫入磁盤,而是先緩存在內存…

    編程 2025-04-25
  • 神經網絡代碼詳解

    神經網絡作為一種人工智能技術,被廣泛應用於語音識別、圖像識別、自然語言處理等領域。而神經網絡的模型編寫,離不開代碼。本文將從多個方面詳細闡述神經網絡模型編寫的代碼技術。 一、神經網…

    編程 2025-04-25
  • git config user.name的詳解

    一、為什麼要使用git config user.name? git是一個非常流行的分布式版本控制系統,很多程序員都會用到它。在使用git commit提交代碼時,需要記錄commi…

    編程 2025-04-25
  • Java BigDecimal 精度詳解

    一、基礎概念 Java BigDecimal 是一個用於高精度計算的類。普通的 double 或 float 類型只能精確表示有限的數字,而對於需要高精度計算的場景,BigDeci…

    編程 2025-04-25
  • Linux修改文件名命令詳解

    在Linux系統中,修改文件名是一個很常見的操作。Linux提供了多種方式來修改文件名,這篇文章將介紹Linux修改文件名的詳細操作。 一、mv命令 mv命令是Linux下的常用命…

    編程 2025-04-25

發表回復

登錄後才能評論