管道(符號 | ):基本的管道操作,是將一個命令的輸出作為另一個命令的輸入。
管道命令的使用方式透過符號 | 來連接不同的命令,將兩個或多個命令連接在一起,用於處理和轉換數據時更加靈活和高效,能夠一個接一個地處理數據流。
管道操作的基本語法:
command1 | command2 | command3 | ….
command1 的輸出成為 command2 的輸入,command2 的輸出再成為 command3 的輸入。這樣可以將數據流動從一個命令傳遞到另一個命令,以進行處理。
ls | grep .txt
列出所有以.txt結尾的文件。
head -n 10 file.txt | sort
head -n 10 file.txt 將文件的前10行輸出,然後 sort 命令將這些行按字母順序排序。
cat file.txt | wc -l
cat file.txt 將文件的內容輸出,然後 wc -l 命令將行數計數。
cat log.txt | grep "error"
grep "error" 將只輸出包含 "error" 的行。
cat log.txt | grep "error" | wc -l
首先,cat 輸出日誌文件的內容,然後 grep 過濾包含 "error" 的行,最後 wc -l 計算這些行的數量。
grep指令
grep指令可用在文件中搜尋特定模式,它可以從指定的文件中過濾所需的字串並在螢幕上顯示,透過結合不同的選項和模式,可以在文件中尋找所需的信息。
常見選項:
-n: 顯示所找到的字串位於文件的第幾行。
-A:顯示匹配結果的前幾行。
-B:顯示匹配結果的後幾行。
-v: 顯示不符合條件的行。
grep -B 5 -A 10 John /home/username
在 /home/username 中,搜尋包含 "John" 字串的行,並顯示該行的前 5 行與後 10 行。
grep -n John /home/username
顯示 /home/username 中包含 "John" 字串的行,並列出這些行的行號:
sort 和 uniq 指令:
sort 命令用於對文件內容進行排序,而uniq 命令用於去除連續重複。將這兩個命令結合使用,可以對文件進行排序和去除連續重複。
範例:
cat unsorted.txt | sort | uniq
這個命令首先使用 cat 命令將文件的內容輸出,然後使用 sort 命令對這些行進行排序,最後使用 uniq 命令去除重複的行。結果將是一個經過排序且沒有重複行的文本。
awk 命令:
awk用於以指定的方式處理和格式化文件內容,可以與管道一起使用以處理更複雜的文件資料處理。使用awk來搜索、過濾、提取和轉換文本。以下是一些常見的 awk 命令示例:
cat data.txt | awk '{print $1}'
取出 data.txt 中每行的第一個字段並輸出。
awk '{print $2}' filename
將取出 filename 中的每行的第二個字段並輸出。
awk '/error/ {print}' filename
顯示 filename 中包含 "error" 的行。
awk -F ',' '{print $2}' csvfile.csv
使用逗號作為字段分隔符,提取 csvfile.csv 中的第二個字段。
awk '$1 > 10 && $2 == "error" {print $3}' filename
filename 中第一列大於 10 且第二列等於 "error" 的行,提取並輸出第三列的內容。
sed 命令
sed 命令對檔案中的文字執行取代操作,以下是一些 sed 命令的常見用法:
sed 's/舊文字/新文字/g' 文件
sed '/要刪除的文字/d' 文件
sed '/插入位置/a 新文字' 文件
sed -n '行號p' 文件
sed -e '操作1' -e '操作2' 文件
正則表達式: 還可以使用正規表示式進行更複雜的匹配和操作,例如,以下命令將所有數字替換為 "替換的數字":
sed 's/[0-9]+/替換的數字/g' 文件