[AIGC] awk 和 sed

在Unix系統中,有兩種強大的用于文本操作的命令工具,它們就是awksed。這兩個命令工具是每個Linux用戶必備的知識之一,尤其對于需要進行文本處理或數據抽取的開發者來說,更加重要。
在實際開發過程中,我們常常需要處理各種數據、日志、配置文件,而這些工作,awksed就能夠起到事半功倍的效果。


文章目錄

  • Awk 和 Sed 簡介
    • 深入分析和掌握awk和sed
      • awk初探
        • awk的基本語法
        • awk的工作原理
        • awk中的變量
      • sed 初探
        • sed基本語法:
        • sed工作原理:
        • sed 地址和地址范圍
        • sed 命令
        • sed 應用實例

Awk 和 Sed 簡介

Awk 是一種編程語言,用于在linux/unix下對文本和數據進行處理。數據可以來自標準輸入(stdin)、一個或多個文件,或者其它命令的輸出。它支持用戶自定義函數和動態正則表達式等強大功能。
Sed(stream editor)是一種流編輯器,它是文本處理中非常中的工具,能夠完美的配合正則表達式使用,功能不同凡響。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space),接著用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件所有的行處理完畢。因此,sed和管道(|)配合可以將數據進行加工,而和重定向配合可以把加工后的數據放到文件里。Sed可以處理磁盤文件里的數據,但它是把數據先讀到內存中處理后,再屏幕上顯示出來,而處理過程中,數據仍在磁盤文件里,而原來的文件內容并沒有改變。

深入分析和掌握awk和sed

接下來我會寫一篇詳細的教程來深入學習和掌握awk和sed這兩個強大的文本處理工具,會針對初學者使用一些簡單清晰的例子來講解它們。看完我相信你對Awk和Sed會有一個全面深入的了解。

awk初探

Awk是一種編程語言,用于在unix/linux下對文本和數據進行處理。根據這篇文章,我們可以看到以下一些Awk命令的基本示例:

awk的基本語法

一般地,awk命令的格式如下:

awk 'pattern {action}' file(s)

這里,awk從file(s)中讀取行,如果pattern匹配,則執行action

awk的工作原理

當awk命令運行時,它將會進行以下步驟:

  1. 從一或多個文件(或stdin)中讀取記錄(默認情況下,一個記錄就是一行)。
  2. 對每一條記錄,從頭到尾測試是否匹配每個模式。如果記錄符合某個模式,則執行該模式所關聯的動作。
  3. 繼續處理輸入文件,直到全部讀取完畢。

例如,以下命令對于文件(file.txt)中每一行,如果該行匹配到模式(“3”),則打印出該行:

awk '/3/ {print $0}' file.txt
awk中的變量

Awk提供了很多內建變量來幫助我們進行操作,具體可以參閱這篇文章。例如,以下命令可以打印出文件(file.txt)的總行數:

awk 'END {print NR}' file.txt

其實當然,還有很多關于Awk的其他強大功能,像是數組和內置函數等等,但這就不在這篇指南的討論范圍之內了。更深入的學習,我推薦你去閱讀這本書。

當探索和使用sed(流編輯器)時,以下是一些您需要了解的基本概念和語法。

sed 初探

sed基本語法:
sed <options> '<command>' <file>

其中,options是可選的,用于指定sed的一些選項;command是sed命令,用于指定要執行的操作;file是要處理的文件。

sed工作原理:

sed按行逐步讀取輸入文件,對每一行應用指定的命令,并輸出結果。默認情況下,sed將原始文件內容直接寫回到標準輸出,也可以通過重定向將輸出保存到文件中。

sed 地址和地址范圍

在sed命令中,可以使用地址或地址范圍來定位要操作的行。地址可以是行號、正則表達式、以及特殊的模式空間標記(如$表示最后一行)。

sed 命令

sed提供了多個命令,用于執行各種操作,如查找替換、刪除行、添加行等。常用的sed命令包括:

  • s/pattern/replacement/:在每一行中查找匹配指定模式的內容,并替換為指定的內容。
  • d:刪除匹配指定條件的行。
  • a:在指定條件的行后插入新行。
  • i:在指定條件的行前插入新行。
  • p:打印指定條件的行。
  • n:讀取下一行,并從該行開始執行后續命令。
sed 應用實例

以下是一些sed的應用實例:

  • 替換文件中的文本:
sed 's/old_text/new_text/' file.txt
  • 刪除文件中的空行:
sed '/^$/d' file.txt
  • 在指定行前插入新行:
sed '3i new_line' file.txt
  • 打印文件的特定行:
sed -n '5p' file.txt

這些只是sed的一些基本概念、語法和命令示例。sed具有非常強大的功能和靈活性,您可以根據實際需求使用更多的sed命令和選項進行文本處理和編輯操作。

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

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

相關文章

JavaScript中的hasOwnProperty方法詳解

JavaScript中的hasOwnProperty方法詳解 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01; 什么是hasOwnProperty方法&#xff1f; 在JavaScript中&#xff0c;h…

Wails 安裝初體驗

文章目錄 Wails 安裝說明1. 系統要求2. 安裝步驟3. 構建應用 結論 Wails 安裝說明 Wails 是一個用于構建桌面應用的 Go 框架&#xff0c;結合了現代前端技術。以下是安裝步驟&#xff1a; 1. 系統要求 Go 1.16 或更高版本Node.js 和 npm可選&#xff1a;適用于 Windows、mac…

【機器學習】機器學習的重要方法——強化學習:理論,方法與實踐

目錄 一、強化學習的核心概念 二、強化學習算法的分類與示例代碼 三.強化學習的優勢 四.強化學習的應用與挑戰 五、總結與展望 強化學習&#xff1a;理論&#xff0c;方法和實踐 在人工智能的廣闊領域中&#xff0c;強化學習&#xff08;Reinforcement Learning, RL&…

轉自羅翔老師的畢業寄語(二)

其實我很想祝大家一帆風順&#xff0c;可是我覺得這不現實。 智者說人這一生至少有三件事是無法避免的&#xff0c;一個是苦難&#xff0c;一個是邪惡&#xff0c;還有一個是人生的終點。所以真的愿我們每時每刻都在當下存儲足夠美好的記憶去對抗人生不期而至的苦楚&#xff0c…

基于源碼詳解ThreadPoolExecutor實現原理

個人博客地址 基于源碼詳解ThreadPoolExecutor實現原理 | iwts’s blog 內容拆分 這里算是一個總集&#xff0c;內容太多&#xff0c;拆分成幾個比較重要的小的模塊&#xff1a; ThreadPoolExecutor基于ctl變量的聲明周期管理 | iwts’s blog ThreadPoolExecutor 工作線程…

模板方法模式在金融業務中的應用及其框架實現

引言 模板方法模式&#xff08;Template Method Pattern&#xff09;是一種行為設計模式&#xff0c;它在一個方法中定義一個算法的框架&#xff0c;而將一些步驟的實現延遲到子類中。模板方法允許子類在不改變算法結構的情況下重新定義算法的某些步驟。在金融業務中&#xff…

可信和可解釋的大語言模型推理-RoG

大型語言模型&#xff08;LLM&#xff09;在復雜任務中表現出令人印象深刻的推理能力。然而&#xff0c;LLM在推理過程中缺乏最新的知識和經驗&#xff0c;這可能導致不正確的推理過程&#xff0c;降低他們的表現和可信度。知識圖譜(Knowledge graphs, KGs)以結構化的形式存儲了…

基于lightgbm hyperopt的旋轉機械故障診斷(Python)

前置文章&#xff1a; 將一維機械振動信號構造為訓練集和測試集&#xff08;Python&#xff09; https://mp.weixin.qq.com/s/DTKjBo6_WAQ7bUPZEdB1TA 旋轉機械振動信號特征提取&#xff08;Python&#xff09; https://mp.weixin.qq.com/s/VwvzTzE-pacxqb9rs8hEVw import…

Python變量的命名規則與賦值方式

第二章&#xff1a;Python 基礎語法 第一節&#xff1a;變量的命名規則與賦值方式 2.1.1 引言 在編程中&#xff0c;變量是存儲數據的基本單元。變量的命名和賦值是編程語言中表達和操作數據的基礎。了解和遵循變量命名規則對于編寫清晰、可維護的代碼至關重要。 2.1.2 變量…

【linux】網絡基礎(1)

文章目錄 網絡基本概念網絡的定義網絡的類型局域網&#xff08;LAN&#xff09;廣域網&#xff08;WAN&#xff09; 網絡協議OSI七層模型TCP/IP模型TCP/IP模型的結構 網絡傳輸的基本流程計算機與計算機之間的通信計算機的信息處理封裝報頭 網絡基本概念 網絡的定義 1.網絡是指…

專題一: Spring生態初探

咱們先從整體脈絡上看下Spring有哪些模塊&#xff0c;重要的概念有個直觀印象。 從Spring框架的整體架構和組成對整體框架有個認知。 Spring框架基礎概念 Spring基礎 - Spring和Spring框架組成 上圖是從官網4.2.x獲取的原圖&#xff0c;目前我們使用最廣法的版本應該都是5.x&am…

GitHub每日最火火火項目(6.30)

項目名稱&#xff1a;modelscope / DiffSynth - Studio 項目介紹&#xff1a;該項目致力于讓用戶體驗擴散模型的神奇魅力。擴散模型是一種具有廣泛應用前景的技術&#xff0c;在圖像生成、音頻處理等領域展現出了強大的能力。通過DiffSynth - Studio&#xff0c;用戶可以深入探…

Arrays.asList 和 java.util.ArrayList 區別

理解 Java 中的 Arrays.asList 和 java.util.ArrayList 的區別 在 Java 編程中&#xff0c;Arrays.asList 方法和 java.util.ArrayList 是兩種常用的處理列表數據的方式。雖然它們在功能上看起來相似&#xff0c;但在內部實現和使用上有著本質的不同。本文將探討這兩種方式的區…

一區算法MPA|海洋捕食者算法原理及其代碼實現(Matlab/Python))

Matlab/Python&#xff1a; 本文KAU將介紹一個2020年發表在1區期刊ESWA上的優化算法——海洋捕食者算法 (Marine Predators Algorithm&#xff0c;MPA)[1] 該算法由Faramarzi等于2020年提出&#xff0c;其靈感來源于海洋捕食者之間不同的覓食策略、最佳相遇概率策略、海洋記…

【Linux】IO多路復用——select,poll,epoll的概念和使用,三種模型的特點和優缺點,epoll的工作模式

文章目錄 Linux多路復用1. select1.1 select的概念1.2 select的函數使用1.3 select的優缺點 2. poll2.1 poll的概念2.2 poll的函數使用2.3 poll的優缺點 3. epoll3.1 epoll的概念3.2 epoll的函數使用3.3 epoll的優點3.4 epoll工作模式 Linux多路復用 IO多路復用是一種操作系統的…

MCU復位時GPIO是什么狀態?

大家一定遇到過上電或者復位時外部的MOS電路或者芯片使能信號意外開啟&#xff0c;至此有經驗的工程師就會經常關心一個問題&#xff0c;MCU復位時GPIO是什么狀態&#xff1f;什么電路需要外部加上下拉&#xff1f; MCU從上電到啟動&#xff0c;實際可分為復位前和復位后、初始…

【WPF】Windows系統桌面應用程序編程開發新手入門-打造自己的小工具

電腦Windows系統上的桌面程序通常是用Visual Studio 開發工具編寫出來的&#xff0c;有兩種開發方式供選擇&#xff0c;一種是WindowForm&#xff0c;簡稱WinForm&#xff0c;另一種是Windows Presentation Foundation&#xff0c;簡稱WPF&#xff0c;這里將學習WPF項目。 文章…

大物3錯題整理

平衡位置&#xff1a;在O點上的位置 相位&#xff1a; 當N很大的時候&#xff0c;wxwywz。因此&#xff0c;平均平動動能除以3&#xff0c;就是能量均分定理。 W F在x上的積分 Π時無單位 180&#xff0c;就是單位 1rad&#xff0c;rad就是單位 左手定則、右手定則、安培定…

C++模板類與繼承

1&#xff09;模板類繼承普通類&#xff08;常見&#xff09;。 2&#xff09;普通類繼承模板類的實例化版本。 3&#xff09;普通類繼承模板類。(常見) 4&#xff09;模板類繼承模板類。 5&#xff09;模板類繼承模板參數給出的基類&#xff08;不能是模板類&#xff09;。 示…

【抽代復習筆記】24-群(十八):循環群的兩道例題

例1&#xff1a;證明&#xff1a; &#xff08;1&#xff09;三次交錯群A3是循環群&#xff0c;它與(Z3,)同構&#xff0c;其中Z3 {[0],[1],[2]}&#xff1b; &#xff08;2&#xff09;G {1,i,-1,-i}&#xff0c;G上的代數運算是數的乘法&#xff0c;則G是一個循環群&…