go在線工具集
首頁
搜索
致boss

linux三劍客
78  |   |   |  0

linux 3劍客

grep

  • grep 是一個強大的命令行工具,用於在檔案或文本中搜索指定的字串或正則表達式。
  • 基本語法
#蒐索模式:可以是普通字串,也可以是正則表達式。
#檔案:指定要蒐索的檔案,可以是一個或多個檔案,也可以通過管道輸入。
grep [選項] "蒐索模式" 檔案
常用選項
選項描述
-i忽略大小寫匹配。
-v反向匹配,顯示未匹配的行。
-c僅輸出匹配的行數。
-n顯示匹配行的行號。
-l僅列出包含匹配內容的檔案名。
-o僅顯示匹配的部分,而非整行。
-r遞迴蒐索
-w完全匹配
-e指定正則表達式
示例
  • 顯示 file.txt 中包含 "hello" 的所有行:
grep "hello" file.txt
  • 顯示目錄 /path/to/directory 中所有包含 "hello" 的檔案及其匹配內容:
grep -r "hello" /path/to/directory
  • 匹配 "error" 或 "ERROR" 等大小寫不同的文本:
grep -i "error" log.txt
  • 顯示匹配 "pattern" 的行及其對應的行號:
grep -n "pattern" file.txt
  • 列出當前目錄下所有包含 "keyword" 的檔案名:
grep -l "keyword" *.txt
  • 顯示匹配 "important" 的行及其前後 2 行內容:
grep -C 2 "important" document.txt

awk

  • awk 是一個功能強大的文本處理工具,用於在檔案或文本流中對數據進行格式化、過濾和分析操作。它支持基於模式的匹配和操作,適用於日誌分析、數據提取和簡單的腳本編寫。
  • 基本語法
#模式:用於匹配輸入數據的條件(可選)。
#動作:對匹配到的數據執行的操作(可選)。
#如果省略 模式,默認匹配所有行。
#如果省略 動作,默認列印匹配的行。
awk '模式 { 動作 }' 檔案
常用選項
選項描述
-F指定輸入欄位分隔符(默認是空格或製錶符)。
-vvar=value 定義變量並傳遞給 awk。
BEGIN在處理數據前執行的動作(如初始化)。
END在所有數據處理完成後執行的動作。
條件表達式如 $1 > 100,匹配第一個欄位大於 100 的行。
常用內置變量
變量描述
$0當前行的內容。
$1 ...當前行的第 1 個、第 2 個欄位,以此類推。
NR當前行號(Number of Record)。
NF當前行的欄位數(Number of Fields)。
FS輸入欄位分隔符(Field Separator)。
OFS輸出欄位分隔符(Output Field Separator)。
示例
  • 逐行列印檔案內容:
awk '{ print $0 }' file.txt
  • 列印檔案每行的第 1 和第 3 個欄位:
awk '{ print $1, $3 }' file.txt
  • 以逗號為分隔符,列印每行的第 2 個欄位:
awk -F "," '{ print $2 }' data.csv
  • 列印第 1 個欄位值大於 50 的所有行:
awk '$1 > 50 { print $0 }' file.txt
  • 列印包含 "error" 的所有行:
awk '/error/ { print $0 }' log.txt
  • 列印每行內容及其欄位數:
awk '{ print $0, "欄位數:", NF }' file.txt
  • 在檔案處理完成後,輸出總行數:
awk 'END { print "總行數:", NR }' file.txt
  • 在檔案處理完成後,輸出總行數:
awk 'END { print "總行數:", NR }' file.txt
  • 在檔案處理前列印 "處理開始",逐行列印第 1 個欄位,最後列印 "處理結束":
awk 'BEGIN { print "處理開始" } { print $1 } END { print "處理結束" }' file.txt
  • 列印第 1 個欄位值大於 100 的行:
awk -v threshold=100 '$1 > threshold { print $0 }' file.txt
  • 計算檔案中第 1 個欄位的總和:
awk '{ sum += $1 } END { print "總和:", sum }' file.txt

sed

  • sed(Stream Editor)是一個強大的流編輯器,用於對文本進行批量處理。它支持查找替換、刪除、插入等多種文本操作,適用於處理檔案或標準輸入中的文本流。
  • 基本語法
#腳本命令:指定對文本進行操作的規則,如替換或刪除。
#檔案:要處理的檔案,也可以通過管道傳入數據。
sed [選項] '腳本命令' 檔案
基本選項
選項描述
-n禁止自動輸出,只有指定的行會被顯示。
-e允許在命令行中添加多個腳本命令。
-i直接修改原文件(就地編輯)。
-f從檔案載入腳本命令。
常用命令
命令描述
s/old/new/替換操作,將 old 替換為 new。
d刪除匹配的行。
p列印匹配的行(與 -n 一起使用)。
a\text在當前行後追加文本 text。
i\text在當前行前插入文本 text。
c\text替換匹配行的內容為 text。
q提前退出,停止處理後續行。
示例
  • 將 file.txt 中的第一處 old 替換為 new:
sed 's/old/new/g' file.txt
  • 刪除 file.txt 中的第 2 行:
sed '2d' file.txt
  • 在第 3 行後插入文本 This is a new line:
sed '3a\This is a new line' file.txt`
  • 在第 3 行前插入文本 This is an inserted line:
sed '3i\This is an inserted line' file.txt
  • 將第 2 行的內容替換為 This is the new content:
sed '2c\This is the new content' file.txt
  • 僅列印包含 pattern 的行:
sed -n '/pattern/p' file.txt
  • 刪除第 1 行,同時將 foo 替換為 bar:
sed '1d; s/foo/bar/' file.txt
  • 直接修改 file.txt,將所有 old 替換為 new:
sed -i 's/old/new/g' file.txt
  • 刪除第 2 行到第 4 行:
sed '2,4d' file.txt
  • 將 script.sed 中的命令應用於 file.txt:
sed -f script.sed file.txt