Linux 實用命令 grep、wc

grep 命令詳解

grep [選項] ‘模式’ 文件名

grep [參數] [選項] [操作對象]

grep ‘error’ -c 5 --color info.log

[模式]:是要搜索的字符串或正則表達式。

[選項]:是可選的,用于定制grep的行為。

[操作對象]:是要搜索的文件名或目錄名。

常用選項

-i:忽略大小寫。

-v:反向匹配,選擇不匹配的行。

-r 或 -R:遞歸搜索,不僅在當前目錄的文件中搜索,還在子目錄的文件中搜索。

-l:只輸出包含匹配行的文件名。

-n:顯示匹配行及其行號。

-c:只輸出匹配的行數。

-o:只輸出匹配的部分。

-A num:顯示匹配行之后的num行。

-B num:顯示匹配行之前的num行。

-C num 或 --context=num:顯示匹配行前后各num行。

-E 使用擴展正則,等價于egrep。

-f 文件:從文件中獲取模式。

–color 或 --colour:高亮顯示匹配部分。

普通正則表達式

^ :以某字符開頭
$ :以某字符結尾
. :匹配除換行符之外的任意單個字符
* :匹配前導字符的零次或者多次
[] :某組字符串的任意一個字符
[^] :取反
[a-z] : 匹配小寫字母
[A-Z] :匹配大寫字母
[a-z[A-Z]: 匹配字母
[0-9] :匹配數字
\ :轉義富符
() :分組

拓展正則表達式

{} :匹配的次數
{n} :匹配n次
{n,} :至少匹配n次
{n,m} :匹配n到m次
{,m} :最多匹配m次
+ :匹配至少一個或多次前導字符
? :匹配一個或者零個前導字符
| :或

正則與grep實戰

  1. 在info.log文件中,匹配含有’error’的行
grep 'error' info.log
  1. 統計在info.log文件中含有’error’的行數
grep 'error' info.log | wc -l

wc 命令詳解

wc(word count)命令是 Linux 和類 Unix 系統中的一個強大工具,用于統計文件中的行數、單詞數、字節數和字符數。通過不同的選項,用戶可以自定義統計的內容。wc 命令不僅適用于單個文件,還可以處理多個文件,并且可以通過管道從標準輸入讀取數據。

基本語法

wc [選項] [文件...]

常用選項

  1. -l 或 --lines:

統計文件的行數。

wc -l filename
  1. -w 或 --words:

統計文件的單詞數。單詞是指由空格、制表符或換行符分隔的非零長度字符序列。

wc -w filename
  1. -c 或 --bytes:

統計文件的字節數。字節數是指文件中所有字符占用的字節數。

wc -c filename
  1. -m 或 --chars:

統計文件的字符數。字符數是指文件中所有字符的數量,包括多字節字符。

wc -m filename
  1. -L 或 --max-line-length:

顯示文件中最長行的長度。

wc -L filename
  1. 無選項:

默認情況下,wc 命令會同時顯示行數、單詞數和字節數。

wc filename

用法示例

統計多個文件的行數:

wc -l file1 file2 file3

統計目錄下所有文件的行數:

wc -l *

統計目錄下所有 .txt 文件的行數:

wc -l *.txt

統計文件的行數并重定向輸出:

wc -l filename > line_count.txt

統計文件的單詞數并追加到另一個文件:

wc -w filename >> word_count.txt

統計多個文件的總行數:

wc -l file1 file2 file3 | awk '/total/ {print $1}'

統計文件中包含特定字符串的行數:

grep "keyword" filename | wc -l

統計文件中每行的平均單詞數:

wc -w filename | awk '{total_words=$1}' && wc -l filename | awk '{total_lines=$1; print total_words/total_lines}'

統計文件中每個單詞出現的次數:

tr ' ' '\n' < filename | sort | uniq -c | sort -nr

統計文件中每個字符出現的次數:

fold -w1 filename | sort | uniq -c | sort -nr

統計文件中每個單詞的長度:

tr ' ' '\n' < filename | awk '{print length, $0}' | sort -n

統計文件中每個單詞的長度分布:

tr ' ' '\n' < filename | awk '{print length}' | sort | uniq -c

統計文件中每個字符的類型(字母、數字、其他):

fold -w1 filename | awk '{if ($1 ~ /[a-zA-Z]/) print "Letter"; else if ($1 ~ /[0-9]/) print "Number"; else print "Other"}' | sort | uniq -c

實際應用示例

統計代碼行數:

統計某個項目中的代碼行數,排除空行和注釋行。

grep -vE '^\s*$|^#' codefile.c | wc -l

統計日志文件中的錯誤數量:

統計日志文件中包含 “ERROR” 的行數。

grep "ERROR" logfile.log | wc -l

統計文本文件中的唯一單詞數:

統計文本文件中的唯一單詞數。

tr ' ' '\n' < textfile.txt | sort | uniq | wc -l

統計多個文件的總字節數:

統計多個文件的總字節數。

wc -c file1 file2 file3 | awk '/total/ {print $1}'

統計目錄下所有文件的總單詞數:

統計目錄下所有文件的總單詞數。

wc -w * | awk '/total/ {print $1}'

統計文件中每個單詞的頻率:

統計文件中每個單詞的頻率,并按頻率降序排列。

tr ' ' '\n' < filename | sort | uniq -c | sort -nr

統計文件中每個字符的頻率:

統計文件中每個字符的頻率,并按頻率降序排列。

fold -w1 filename | sort | uniq -c | sort -nr

統計文件中每個單詞的長度分布:

統計文件中每個單詞的長度分布,并按長度升序排列。

tr ' ' '\n' < filename | awk '{print length, $0}' | sort -n

統計文件中每個單詞的長度分布:

統計文件中每個單詞的長度分布,并按長度升序排列。

tr ' ' '\n' < filename | awk '{print length}' | sort | uniq -c

統計文件中每個字符的類型:

統計文件中每個字符的類型(字母、數字、其他),并按類型分類。

fold -w1 filename | awk '{if ($1 ~ /[a-zA-Z]/) print "Letter"; else if ($1 ~ /[0-9]/) print "Number"; else print "Other"}' | sort | uniq -c

注意事項

  1. 文件大小:對于非常大的文件,wc 命令可能會消耗較多的內存和 CPU 資源。在這種情況下,可以考慮使用流式處理工具(如 awk)來優化性能。
  2. 權限問題:如果文件沒有讀取權限,wc 命令會報錯。確保你有適當的權限來讀取文件。
  3. 輸出重定向:使用 > 重定向輸出時,會覆蓋目標文件的內容。使用 >> 追加內容時,會在目標文件末尾添加內容。
  4. 多文件統計:當統計多個文件時,wc 命令會為每個文件單獨輸出統計結果,并在最后一行顯示總計。

總結

wc 命令是一個非常實用的工具,適用于多種文件統計場景。更靈活地使用 wc 命令來統計文件的行數、單詞數、字節數和字符數。無論是簡單的文件統計還是復雜的文本處理,wc 命令都能提供強大的支持。

管道符

管道符 “ | ” ,左邊的輸出結構,作為右邊的輸入。

統計info.log文件中ccf5928453f34df9出現的行數

grep 'ccf5928453f34df9' info.log | wc -l

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

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

相關文章

【Transformer】深入淺出自注意力機制

寫在前面&#xff1a;博主本人也是剛接觸計算機視覺領域不久&#xff0c;本篇文章是為了記錄自己的學習&#xff0c;大家一起學習&#xff0c;有問題歡迎大家指出。&#xff08;博主本人的習慣是看文章看到不懂的有立馬去看不懂的那塊&#xff0c;所以博文可能內容比較雜&#…

HarmonyOS NEXT 實戰之元服務:靜態案例效果---教育培訓服務

背景&#xff1a; 前幾篇學習了元服務&#xff0c;后面幾期就讓我們開發簡單的元服務吧&#xff0c;里面豐富的內容大家自己加&#xff0c;本期案例 僅供參考 先上本期效果圖 &#xff0c;里面圖片自行替換 效果圖1完整代碼案例如下&#xff1a; import { authentication } …

3.阿里云flinkselectdb-py作業

1.概述 Python API中文文檔 本文介紹在阿里云實時計算flink中使用python作業&#xff0c;把oss中的數據同步數據到阿里云selectdb的過程。python簡單的語法特性更適合flink作業的開發&#xff1b; 先說結論: 在實際開發中遇到了很多問題&#xff0c;導致python作業基本基本無法…

互聯網視頻云平臺EasyDSS無人機推流直播技術如何助力野生動植物保護工作?

在當今社會&#xff0c;隨著科技的飛速發展&#xff0c;無人機技術已經廣泛應用于各個領域&#xff0c;為我們的生活帶來了諸多便利。而在動植物保護工作中&#xff0c;無人機的應用更是為這一領域注入了新的活力。EasyDSS&#xff0c;作為一款集視頻處理、分發、存儲于一體的綜…

51c視覺~YOLO~合集8

我自己的原文哦~ https://blog.51cto.com/whaosoft/12897680 1、Yolo9 1.1、YOLOv9SAM實現動態目標檢測和分割 主要介紹基于YOLOv9SAM實現動態目標檢測和分割 背景介紹 在本文中&#xff0c;我們使用YOLOv9SAM在RF100 Construction-Safety-2 數據集上實現自定義對象檢測模…

Docker Container 可觀測性最佳實踐

Docker Container 介紹 Docker Container&#xff08; Docker 容器&#xff09;是一種輕量級、可移植的、自給自足的軟件運行環境&#xff0c;它在 Docker 引擎的宿主機上運行。容器在許多方面類似于虛擬機&#xff0c;但它們更輕量&#xff0c;因為它們不需要模擬整個操作系統…

氣相色譜-質譜聯用分析方法中的常用部件,分流平板更換

分流平板&#xff0c;是氣相色譜-質譜聯用分析方法中的一個常用部件&#xff0c;它可以實現氣相色譜柱流與MS檢測器流的分離和分流。常見的氣質聯用儀分流平板有很多種&#xff0c;如單層T型分流平板、雙層T型分流平板、螺旋分流平板等等。 操作視頻http://www.spcctech.com/v…

易基因: BS+ChIP-seq揭示DNA甲基化調控非編碼RNA(VIM-AS1)抑制腫瘤侵襲性|Exp Mol Med

大家好&#xff0c;這里是專注表觀組學十余年&#xff0c;領跑多組學科研服務的易基因。 肝細胞癌&#xff08;hepatocellular carcinoma&#xff0c;HCC&#xff09;早期復發仍然是一個具有挑戰性的領域&#xff0c;其中涉及的機制尚未完全被理解。盡管微血管侵犯&#xff08…

鴻蒙系統文件管理基礎服務的設計背景和設計目標

有一定經驗的開發者通常對文件管理相關的api應用或者底層邏輯都比較熟悉&#xff0c;但是關于文件管理服務的設計背景和設計目標可能了解得不那么清楚&#xff0c;本文旨在分享文件管理服務的設計背景及目標&#xff0c;方便廣大開發者更好地理解鴻蒙系統文件管理服務。 1 鴻蒙…

如何配置 Java 環境變量:設置 JAVA_HOME 和 PATH

目錄 一、什么是 Java 環境變量&#xff1f; 二、配置 Java 環境變量 1. 下載并安裝 JDK 2. 配置 JAVA_HOME Windows 系統 Linux / macOS 系統 3. 配置 PATH Windows 系統 Linux / macOS 系統 4. 驗證配置 三、常見問題與解決方案 1. 無法識別 java 或 javac 命令 …

Doris 數據庫外部表-JDBC 外表,Oracle to Doris

簡介 提供了 Doris 通過數據庫訪問的標準接口 (JDBC) 來訪問外部表&#xff0c;外部表省去了繁瑣的數據導入工作&#xff0c;讓 Doris 可以具有了訪問各式數據庫的能力&#xff0c;并借助 Doris 本身的 OLAP 的能力來解決外部表的數據分析問題&#xff1a; 支持各種數據源接入…

分布式 IO 模塊助力沖壓機械臂產線實現智能控制

在當今制造業蓬勃發展的浪潮中&#xff0c;沖壓機械臂產線的智能化控制已然成為提升生產效率、保障產品質量以及增強企業競爭力的關鍵所在。而分布式 IO 模塊的應用&#xff0c;正如同為這條產線注入了一股強大的智能動力&#xff0c;開啟了全新的高效生產篇章。 傳統挑戰 沖壓…

CSS系列(37)-- Overscroll Behavior詳解

前端技術探索系列&#xff1a;CSS Overscroll Behavior詳解 &#x1f4f1; 致讀者&#xff1a;探索滾動交互的藝術 &#x1f44b; 前端開發者們&#xff0c; 今天我們將深入探討 CSS Overscroll Behavior&#xff0c;這個強大的滾動行為控制特性。 基礎概念 &#x1f680; …

深度學習中的并行策略概述:4 Tensor Parallelism

深度學習中的并行策略概述&#xff1a;4 Tensor Parallelism 使用 PyTorch 實現 Tensor Parallelism 。首先定義了一個簡單的模型 SimpleModel&#xff0c;它包含兩個全連接層。然后&#xff0c;本文使用 torch.distributed.device_mesh 初始化了一個設備網格&#xff0c;這代…

企業銷售人員培訓系統|Java|SSM|VUE| 前后端分離

【技術棧】 1??&#xff1a;架構: B/S、MVC 2??&#xff1a;系統環境&#xff1a;Windowsh/Mac 3??&#xff1a;開發環境&#xff1a;IDEA、JDK1.8、Maven、Mysql5.7 4??&#xff1a;技術棧&#xff1a;Java、Mysql、SSM、Mybatis-Plus、VUE、jquery,html 5??數據庫…

vue 本地自測iframe通訊

使用 postMessage API 來實現跨窗口&#xff08;跨域&#xff09;的消息傳遞。postMessage 允許你安全地發送消息到其他窗口&#xff0c;包括嵌套的 iframe&#xff0c;而不需要擔心同源策略的問題。 發送消息&#xff08;父應用&#xff09; 1. 父應用&#xff1a;發送消息給…

Linux:code:network:devinet_sysctl_forward;IN_DEV_FORWARD

文章目錄 簡介sysctl 設置使用,arp_process間接使用IN_DEV_RX_REDIRECTSdev_disable_lro簡介 最近在看Linux里的forwarding的功能。順便在這里總結一下。有些詳細代碼邏輯,如果可以記錄一下,會好一點。 sysctl 設置 這個函數在查看的時候需要注意的問題:變量名起的有點簡…

自然語言處理與知識圖譜的融合與應用

目錄 前言1. 知識圖譜與自然語言處理的關系1.1 知識圖譜的定義與特點1.2 自然語言處理的核心任務1.3 二者的互補性 2. NLP在知識圖譜構建中的應用2.1 信息抽取2.1.1 實體識別2.1.2 關系抽取2.1.3 屬性抽取 2.2 知識融合2.3 知識推理 3. NLP與知識圖譜融合的實際應用3.1 智能問答…

PHP 數組

PHP 數組 PHP 是一種流行的服務器端編程語言&#xff0c;它提供了強大的數組處理能力。PHP 數組是一種數據結構&#xff0c;用于存儲相同類型或不同類型的多個值。在 PHP 中&#xff0c;數組可以分為一維數組、二維數組和多維數組。本文將詳細介紹 PHP 數組的各種操作&#xf…

CSS(三)盒子模型

目錄 Content Padding Border Margin 盒子模型計算方式 使用 box-sizing 屬性控制盒子模型的計算 所有的HTML元素都可以看作像下圖這樣一個矩形盒子&#xff1a; 這個模型包括了四個區域&#xff1a;content&#xff08;內容區域&#xff09;、padding&#xff08;內邊距…