【linux基礎】Linux 文本處理核心命令指南

Linux 文本處理核心命令指南

文本處理是 Linux 系統管理的核心能力,約 80% 的配置文件操作都依賴于文本處理技術。本指南詳細講解 echo、重定向、catgrepwcvim 等關鍵命令,涵蓋從基礎操作到高級技巧的完整知識體系,并配有實用案例演示。

1. echo:高效的文本輸出工具

適用場景

  • 輸出腳本運行狀態信息(如操作結果、錯誤提示)
  • 快速創建文本文件(配合重定向操作)
  • 格式化文本輸出(支持換行、制表符、顏色等樣式)
  • 生成數字或字母序列

echo是Bash內置的常用命令,廣泛應用于Shell腳本中的文本輸出和格式化處理。

核心功能

  • 終端信息顯示
  • 文本格式化(支持換行符、制表符等)
  • 文件內容寫入
  • 顯示環境變量及命令執行結果

常用選項

  • -e:啟用轉義字符解析(如\n換行、\t制表等)
  • -n:禁止自動換行(輸出后不添加換行符)

轉義字符對照表(需配合-e選項)

轉義符功能示例輸出效果
\n換行echo -e "a\nb"a
b
\t水平制表符echo -e "a\tb"a b
\r回車(覆蓋當前行)echo -e "abc\r12"12c
\v垂直制表符echo -e "a\vb"a
??b
\a系統提示音echo -e "alert\a"終端發聲
\\輸出反斜杠echo -e "a\\b"a\b
\033[顏色碼mANSI顏色控制echo -e "\033[31mred\033[0m"紅色"red"

實用技巧

格式化輸出
# 彩色提示信息
echo -e "\033[31mError\033[0m: File not found"  # 紅色錯誤提示# 動態進度顯示
for i in {1..10}; doecho -ne "Progress: [${i}0%]\r"  # 使用\r覆蓋當前行sleep 0.5
done
echo  # 換行結束
引號使用區別
# 雙引號會解析變量和命令
name="Linux"
echo "User: $name, PWD: $(pwd)"  # 輸出:User: Linux, PWD: /home/user# 單引號保持原樣輸出
echo 'User: $name, PWD: $(pwd)'  # 輸出:User: $name, PWD: $(pwd)# 命令替換(兩種等效寫法)
echo "Today: `date +%F`"  # 輸出:Today: 2024-05-20
序列生成方法
echo {001..005}        # 帶前導零的數字序列:001 002 003 004 005
echo {a..z..2}         # 步長為2的字母序列:a c e ... y
echo {2020..2023}-01   # 組合序列:2020-01 2021-01 2022-01 2023-01

2. 重定向操作:> 與 >>

適用場景

  • 日志記錄:將命令輸出保存至日志文件
  • 信息過濾:隱藏編譯/安裝過程中的冗余信息
  • 配置生成:配合echo或cat創建配置文件
  • 內容合并:匯集多個命令輸出到單個文件

重定向是Linux I/O管理的核心機制,通過改變數據流向實現高效文本處理。

核心概念

  • 文件描述符
    • 0 (stdin):標準輸入
    • 1 (stdout):標準輸出
    • 2 (stderr):標準錯誤
  • 操作符區別
    • >:覆蓋寫入(默認操作stdout,等價于1>
    • >>:追加寫入(等價于1>>
    • 2>:重定向錯誤輸出
    • &>:合并標準輸出和錯誤輸出

文件描述符關系圖

0 (stdin)  → [進程]↓
1 (stdout) → 終端/文件↓
2 (stderr) → 終端/文件(與stdout獨立)

實用技巧與安全操作

基礎重定向
# 覆蓋寫入
echo "hello" > output.txt# 追加內容
echo "world" >> output.txt# 錯誤重定向
ls non_exist_file 2> error.log  # 將錯誤信息保存至error.log
輸出屏蔽
# 靜默執行(丟棄所有輸出)
make > /dev/null 2>&1  # 合并stdout和stderr到null設備# 僅顯示錯誤
command > /dev/null  # 忽略正常輸出
防覆蓋保護
# 啟用保護
set -o noclobber# 強制寫入(覆蓋模式下)
echo "force write" >| existing.txt# 關閉保護
set +o noclobber
批量輸出收集
# 收集系統信息
{echo "=== System Info ==="dateuname -a
} > system_report.txt

3. cat:文件查看與處理工具

適用場景

  • 快速查看小型文本文件(如配置文件和日志片段)
  • 使用heredoc語法創建多行文本
  • 合并多個文件內容
  • 顯示特殊字符(包括換行符和制表符)

cat是一款高效的文件處理工具,特別適合處理中小型文本文件和腳本模板。

與less/more的功能對比

工具優勢局限最佳使用場景
cat操作簡單,支持內容合并不支持分頁,處理大文件不便查看小文件、合并內容、heredoc寫入
less支持分頁、搜索和雙向瀏覽功能較復雜瀏覽大文件、交互式查看
more輕量級基礎分頁功能僅支持單向滾動簡單分頁查看(替代cat處理大文件)

核心功能

  • 查看文件內容
  • 合并多個文件輸出
  • 通過heredoc寫入多行文本
  • 可視化控制字符

常用選項

  • -n:顯示行號
  • -s:壓縮連續空行
  • -T:可視化制表符(顯示為^I
  • -E:標記行尾(顯示$
  • -A:顯示所有特殊字符(等同于-vET

實用操作指南

基礎查看與文件合并
# 帶行號查看文件
cat -n /etc/hosts# 合并文件內容
cat part1.txt part2.txt > combined.txt# 識別換行符差異
cat -A windows.txt  # 顯示^M$(Windows格式)
cat -A linux.txt    # 顯示$(Linux格式)
heredoc多行文本操作
# 基本用法(EOF可替換為其他分隔符)
cat > config.ini << EOF
[server]
port=8080
debug=true
EOF# 禁用變量解析
name="test"
cat > info.txt << 'EOF'
username=$name  # 原樣輸出
EOF# 保留縮進格式(使用<<-忽略前導制表符)
cat > script.sh <<- 'EOF'#!/bin/bashecho "保留格式的腳本"
EOF
管道文本處理
# 過濾注釋和空行
cat /etc/nginx/nginx.conf | grep -Ev "^\s*(#|$)"# 統計有效代碼行數
cat app.py | grep -v "^$" | wc -l

4. grep:高效文本過濾

適用場景

  • 日志分析(篩選錯誤、警告信息)
  • 配置文件過濾(提取有效配置行)
  • 進程/服務查詢(結合ps命令)
  • 文本內容搜索(匹配特定模式)

grep是基于正則表達式的文本過濾工具,能顯著提升日志分析和內容檢索效率。

正則表達式速查表

符號含義示例匹配內容
^行首^error以error開頭的行
$行尾done$以done結尾的行
\s空白字符(空格/制表符)^\s*$空行(含空格的空行)
\S非空白字符\S+連續非空白字符(單詞)
.任意單個字符a.ba后接任意字符再接b(如aab、acb)
*前一字符出現0次或多次ab*a后接0個或多個b(如a、ab、abb)
+前一字符出現1次或多次ab+a后接1個或多個b(如ab、abb)
[]字符集[0-9a-f]單個數字或a-f的字母
()分組`(errorwarn)`

常用選項與組合示例

選項功能基礎示例組合示例(-i±n)
-n顯示匹配行的行號grep "error" log.txtgrep -in "error" log.txt(忽略大小寫+顯示行號)
-i忽略大小寫grep -i "Error" log.txt同上
-v排除匹配行grep -v "debug" log.txtgrep -vin "debug" log.txt(排除debug+顯示行號)
-A n顯示匹配行及后n行grep -A 2 "error" log.txt-
-B n顯示匹配行及前n行grep -B 2 "error" log.txt-
-r遞歸搜索目錄grep -r "port" /etc/grep -rin "port" /etc/(遞歸+忽略大小寫+行號)
-E啟用擴展正則`grep -E "errorwarn" log.txt`

實戰案例

日志分析
# 統計1小時內的500錯誤次數
grep "2024-05-20 14:" access.log | grep " 500 " | wc -l# 提取錯誤IP及出現次數(按次數排序)
grep "error" access.log | awk '{print $1}' | sort | uniq -c | sort -nr
進程過濾(排除grep自身)
# 查找Apache或Nginx進程(排除grep進程)
ps aux | grep -E "[A]pache|[n]ginx"  # 方括號使grep不匹配自身
配置文件清理
# 提取有效配置行(排除注釋、空行)
grep -Ev "^\s*(#|$)" /etc/sysctl.conf  # -E啟用擴展正則,-v排除
復雜模式匹配
# 匹配IP地址(簡單驗證)
grep -Eo "([0-9]{1,3}\.){3}[0-9]{1,3}" log.txt  # -o僅顯示匹配部分# 匹配郵箱地址(基礎驗證)
grep -E "^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$" emails.txt

5. wc:文本統計工具

適用場景

  • 代碼行數統計(統計項目代碼量)
  • 日志條目計數(監控日志增長)
  • 文本內容分析(單詞數、最長行等)
  • 管道中配合過濾命令統計結果

wc是輕量高效的統計工具,常與findgrep等命令組合使用。

核心功能

  • -l:統計行數(最常用)
  • -w:統計單詞數(以空白分隔)
  • -c:統計字節數
  • -L:統計最長行的長度(字符數)

實戰案例

代碼統計(結合find和sort)
# 統計當前目錄下所有.go文件的行數,按行數降序取前5
find . -name "*.go" | xargs wc -l | sort -nr | head -5
# 輸出示例:
# 1200 ./main.go
# 850  ./utils/helper.go
# ...
日志監控
# 實時監控Nginx訪問日志行數(每1秒刷新)
watch -n 1 'wc -l /var/log/nginx/access.log'
文本分析
# 統計/etc/passwd的用戶數(行數)、最長行長度
wc -lL /etc/passwd  # 輸出:40  92 /etc/passwd(40行,最長行92字符)# 統計單詞數(適合純文本內容)
wc -w article.txt  # 輸出:1520 article.txt(1520個單詞)
配合管道統計過濾結果
# 統計系統中已登錄的用戶數(排除重復)
who | cut -d " " -f 1 | sort | uniq | wc -l

6. vim:高效文本編輯器

適用場景

  • 配置文件修改(如nginx、mysql等)
  • 腳本開發(支持bash、python等語言)
  • 文本處理(批量替換、格式調整)
  • 編程開發(提供語法高亮、智能縮進等功能)

vim是專業級文本編輯器(基于vi增強),采用多模式操作設計,掌握后能顯著提升編輯效率。

核心模式

  • 普通模式:默認狀態,用于導航和基本編輯(按Esc返回)
  • 插入模式:文本輸入狀態(通過i/a/o等進入)
  • 命令模式:執行保存、搜索等操作(按:激活)

高效操作指南

基礎編輯
# 進入插入模式
i  # 當前光標前插入
a  # 當前光標后插入
o  # 下方新建行插入# 文件操作(命令模式)
:w        # 保存文件
:q        # 安全退出
:wq       # 保存后退出
:q!       # 強制退出
進階技巧
# 權限提升保存
:w !sudo tee %  # 使用sudo權限保存當前文件# 操作歷史
u          # 撤銷操作
Ctrl + r   # 恢復撤銷# 操作歷史可視化
:h undo-tree  # 查看幫助
:UndotreeToggle  # 顯示操作歷史樹
批量處理
# 多行縮進
V          # 進入行選擇模式
j/k        # 選擇行范圍
>          # 增加縮進(<減少縮進)# 列編輯
Ctrl + v   # 進入塊選擇模式
j/k        # 選擇列區域
I          # 插入內容(Esc后生效)# 全局替換
:%s/old/new/g  # 全文替換
:%s/old/new/gc # 交互式替換
配置優化(~/.vimrc)
set number              " 顯示行號
syntax on               " 語法高亮
set tabstop=4           " Tab寬度
set shiftwidth=4        " 縮進寬度
set expandtab           " Tab轉空格
set autoindent          " 自動縮進
set ignorecase          " 搜索不區分大小寫
set hlsearch            " 高亮搜索結果

通過系統化練習這些工具的高級用法,可顯著提升Linux環境下的文本處理效率,從簡單的內容輸出到復雜的配置管理均能應對自如。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/95186.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/95186.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/95186.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于深度學習YOLOv12的草莓成熟度檢測系統(YOLOv12+YOLO數據集+UI界面+登錄注冊界面+Python項目源碼+模型)https://www.bilibili.com/video/BV1

一、項目介紹 本項目構建了一套基于深度學習 YOLOv12 的草莓成熟度識別檢測系統&#xff0c;旨在實現對草莓在不同成熟階段的高精度、實時檢測與分類。系統采用 YOLO 格式數據集&#xff0c;將草莓分為 3 個類別&#xff1a;生&#xff08;raw&#xff09;、半熟&#xff08;tu…

深入理解Android Kotlin Flow:響應式編程的現代實踐

引言在現代Android開發中&#xff0c;處理異步數據流是一個核心需求。Kotlin Flow作為協程庫的一部分&#xff0c;提供了一種聲明式的、可組合的異步數據流處理方式。本文將深入探討Flow的設計理念、核心組件、高級用法以及在實際項目中的最佳實踐。一、Flow基礎概念1.1 什么是…

功能測試詳解

&#x1f345; 點擊文末小卡片&#xff0c;免費獲取軟件測試全套資料&#xff0c;資料在手&#xff0c;漲薪更快 一、測試項目啟動與研讀需求文檔&#xff08;一&#xff09; 組建測試團隊1、測試團隊中的角色2、測試團隊的基本責任盡早地發現軟件程序、系統或產品中所有的問題…

算法73. 矩陣置零

給定一個 m x n 的矩陣&#xff0c;如果一個元素為 0 &#xff0c;則將其所在行和列的所有元素都設為 0 。請使用原地算法。 示例 1&#xff1a;輸入&#xff1a;matrix [[1,1,1],[1,0,1],[1,1,1]] 輸出&#xff1a;[[1,0,1],[0,0,0],[1,0,1]] 示例2&#xff1a; 輸入&#xf…

【力扣22】括號生成

數字n代表生成括號的對數&#xff0c;請你設計一個函數&#xff0c;用于能夠生成所有可能的并且有效的括號組合。 源代碼&#xff1a; class Solution { public:int n;vector<string> ans;string path;vector<string> generateParenthesis(int n) {this->n n;d…

ELK分布式日志采集系統

* 系統架構&#xff1a;filebeat 采集各服務器日志&#xff1b;Logstash-docker 過濾整理日志&#xff1b; Elasticsearch-docker 存儲和索引數據&#xff1b; Kibana-docker 提供可視化展示和操作。* FileBeat簡介&#xff1a;Filebeat是本地文件的日志數據采集器。* Kafka簡介…

Python生產環境部署指南:專業級應用啟動方案

在生產環境中部署Python應用需要考慮穩定性、性能和安全性。本文將詳細介紹多種專業部署方案,助你構建可靠的生產環境。 一、核心部署架構 標準Python生產環境包含三個核心組件: 應用服務器:運行Python代碼(Gunicorn/uWSGI/Uvicorn) 進程管理器:保障服務持續運行(Supe…

C語言:結構體、共用體與枚舉詳解

在 C 語言編程中&#xff0c;結構體&#xff08;struct&#xff09;、共用體&#xff08;union&#xff09;與枚舉&#xff08;enum&#xff09;是三種非常重要的用戶自定義數據類型。它們能幫助我們更好地組織、管理和表達復雜的數據結構。本文將結合實例&#xff0c;深入介紹…

Linux Web服務器與WordPress部署筆記

web服務器 nginx 配置基本認證 用戶名和密碼使用plain text發送&#xff0c;所以最好配置SSL/TLS。 # 安裝工具[rootserver ~ 09:21:43]# yum -y install httpd-tools[rootserver ~ 09:28:30]# vim /etc/nginx/conf.d/ssl.confserver {?location /auth-basic/ {auth_basic …

貪心----3. 跳躍游戲 II

45. 跳躍游戲 II - 力扣&#xff08;LeetCode&#xff09; /** 維護變量: max_reachable,遍歷過的元素的最遠可達位置 end,當前區間終點(隨max_reachable變化) 遍歷過程: 遍歷時迭代遍歷過的元素最遠可達位置,利用end記錄當前區間終點(隨max_reachable變化) 當移動至end即當前…

RabbitMQ面試精講 Day 13:HAProxy與負載均衡配置

【RabbitMQ面試精講 Day 13】HAProxy與負載均衡配置 開篇 歡迎來到"RabbitMQ面試精講"系列的第13天&#xff01;今天我們將聚焦RabbitMQ集群架構中的關鍵組件——HAProxy及其負載均衡配置。在大型分布式系統中&#xff0c;如何實現RabbitMQ集群的高可用和負載均衡是…

C# 中常用集合以及使用場景

1. 數組 (Array)??特點?&#xff1a;固定大小、內存連續、訪問速度快?使用場景?&#xff1a;需要高性能的固定大小集合數值計算&#xff08;如矩陣運算&#xff09;存儲已知長度的數據&#xff08;如配置文件參數&#xff09;?2. List<T>??特點?&#xff1a;動態…

量化實戰學習 Day 2:雙均線策略實現與回測分析

一、前言在完成第一天的環境搭建和基礎認知后&#xff0c;今天將進入真正的策略開發環節。本文將記錄我從數據處理到第一個量化策略實現的全過程&#xff0c;包含完整的代碼示例和深度思考。二、復習與環境檢查1.1 環境復查首先確認了Day 1搭建的環境運行正常&#xff1a; cond…

ubuntu 安裝內核模塊驅動 DKMS 介紹

DKMS&#xff08;Dynamic Kernel Module Support&#xff0c;動態內核模塊支持&#xff09;是一個用于管理 Linux 內核模塊的工具&#xff0c;主要作用是在系統內核更新時&#xff0c;自動重新編譯和安裝依賴于特定內核版本的驅動程序&#xff08;內核模塊&#xff09;&#xf…

adb使用指南

adb使用指南一、介紹二、連接一、有線連接方式二、無線連接方式**Android 10及以下版本****Android 11及以上版本**三、指令1、設備連接管理2、應用調試3、文件傳輸4、系統控制6、日志分析7、其他速查表總結python腳本實例&#xff1a;提示&#xff1a;以下是本篇文章正文內容&…

C語言實戰:二級指針與文件操作的完美邂逅——動態管理文件數據

資料合集下載鏈接: ?https://pan.quark.cn/s/472bbdfcd014? 在上一篇文章中,我們探討了二級指針作為函數“輸出特性”的強大功能。今天,我們將更進一步,通過一個完整的實戰項目,將二級指針與文件I/O操作結合起來,學習如何動態、高效地讀取和管理文件內容。 這個項目…

低代碼開發實戰案例,如何通過表單配置實現數據輸入、數據存儲和數據展示?

JVS低代碼輕應用快速開發采用所見即所得的配置思路&#xff0c;表單是低代碼中最基礎的業務配置引擎之一&#xff0c;快速的通過表單配置實現數據輸入、數據存儲&#xff0c;數據展示。那么在輕應用下直接點開菜單打開的表單&#xff0c;錄入數據提交到數據模型&#xff0c;后續…

數字孿生系統讓汽車工廠虛實聯動預測維護少停機

在汽車制造行業&#xff0c;設備突發停機往往會引發連鎖反應&#xff0c;導致生產中斷、成本飆升。傳統運維模式依賴人工巡檢與事后維修&#xff0c;難以應對復雜生產場景下的設備管理需求。如今&#xff0c;數字孿生系統憑借虛實聯動的核心能力&#xff0c;為汽車工廠打造預測…

iceberg1.2.0 修改表與覆蓋寫

版本iceberg 1.2.0修改表只支持HiveCatalog表修改表屬性&#xff0c;Iceberg表屬性和Hive表屬性存儲在HMS中是同步的修改外部表刪表時是否刪除數據的表屬性&#xff0c;這里是修改為刪除表時不刪除數據alter table iceberg_test1 set TBLPROPERTIES(external.table.purgeFALSE)…

Mini-Omni: Language Models Can Hear, Talk While Thinking in Streaming

2024.8tsinghuamethodwhisper encoder: whisper smallLLM Qwen0.5b init預測方式&#xff1a;text 7*audio token&#xff0c; parallel generation的方式預測&#xff0c;delay-step1----先預測文本token&#xff0c;再預測SNAC 第一級碼本&#xff0c;然后序列化的逐漸預測后…