目錄
awk
sed
sed和awk的区别
首頁 運維 linux運維 linux中sed和awk有什麼差別

linux中sed和awk有什麼差別

May 11, 2022 pm 06:38 PM
linux

區別:1、sed是流編輯器,而awk是文字格式化工具,報告產生器;2、awk適合對文件進行抽取整理,sed適合編輯文件;3、sed讀取一行數據,會以行作為單位進行處理,而awk讀取一行,會切割成字段,以字段(列)為單位,進行細節處理。

linux中sed和awk有什麼差別

本教學操作環境:CentOS 6系統、Dell G3電腦。

awk

awk是一種程式語言,對文件資料的處理具有很強的功能。 awk擅長從格式化封包或從一個大型的文字檔案中抽取資料。

awk 指令是逐行掃描檔案(從第1 行到最後一行),尋找含有目標文字的行,如果符合成功,則會在該行上執行使用者想要的動作;反之,則不對行做任何處理。

awk 指令的基本格式為:

awk [选项] '脚本命令' 文件名
登入後複製

此指令常用的選項以及各自的意義,如表 1 所示。

        表 1 awk 指令選項及意義
                選項                意義
                -F fs                指定以 fs 作為輸入行的分隔符,awk 指令預設分隔符號為空格或製表符。
                -f file                從腳本檔案讀取 awk 腳本指令,以取代直接在命令列中輸入指令。
                -v var=val                在執行處理過程之前,設定一個變數 var,並給其設備初始值為 val。

awk 的强大之处在于脚本命令,它由 2 部分组成,分别为匹配规则和执行命令,如下所示:

'匹配规则{执行命令}'
登入後複製

这里的匹配规则,和 sed 命令中的 address 部分作用相同,用来指定脚本命令可以作用到文本内容中的具体行,可以使用字符串(比如 /demo/,表示查看含有 demo 字符串的行)或者正则表达式指定。另外需要注意的是,整个脚本命令是用单引号('')括起,而其中的执行命令部分需要用大括号({})括起来。

在 awk 程序执行时,如果没有指定执行命令,则默认会把匹配的行输出;如果不指定匹配规则,则默认匹配文本中所有的行。

举个简单的例子:

[root@localhost ~]# awk '/^$/ {print "Blank line"}' test.txt
登入後複製

在此命令中,/^$/ 是一个正则表达式,功能是匹配文本中的空白行,同时可以看到,执行命令使用的是 print 命令,此命令经常会使用,它的作用很简单,就是将指定的文本进行输出。因此,整个命令的功能是,如果 test.txt 有 N 个空白行,那么执行此命令会输出 N 个 Blank line。

sed

sed 命令采用的是流编辑模式,最明显的特点是,在 sed 处理数据之前,需要预先提供一组规则,sed 会按照此规则来编辑数据。

sed 会根据脚本命令来处理文本文件中的数据,这些命令要么从命令行中输入,要么存储在一个文本文件中,此命令执行数据的顺序如下:

  • 每次仅读取一行内容;

  • 根据提供的规则命令匹配并修改数据。注意,sed 默认不会直接修改源文件数据,而是会将数据复制到缓冲区中,修改也仅限于缓冲区中的数据;

  • 将执行结果输出。

当一行数据匹配完成后,它会继续读取下一行数据,并重复这个过程,直到将文件中所有数据处理完毕。

sed 命令的基本格式如下:

sed [选项] [脚本命令] 文件名
登入後複製

该命令常用的选项及含义,如表 1 所示。

        表 1 sed 命令常用选项及含义
                选项                 含义
                -e 脚本命令                 该选项会将其后跟的脚本命令添加到已有的命令中。
                -f 脚本命令文件                 该选项会将其后文件中的脚本命令添加到已有的命令中。
                -n                 默认情况下,sed 会在所有的脚本指定执行完毕后,会自动输出处理后的内容,而该选项会屏蔽启动输出,需使用 print 命令来完成输出。
                -i                 此选项会直接修改源文件,要慎用。

成功使用 sed 命令的关键在于掌握各式各样的脚本命令及格式,它能帮你定制编辑文件的规则。

sed和awk的区别

  • sed是流编辑器,而awk是文本格式化工具,报告生成器

    如果文件是格式化的,即由分隔符分为多个域的,优先使用awk

  • awk适合对文件的抽取整理,sed适合对文件的编辑。

  • awk适合按列(域)操作,sed适合按行操作

    sed:每次读入一行来处理的,sed 适合简单的文本替换和搜索,sed读取一行,以行作为单位,进行处理。

    awk:每次读入一行来处理的(同sed),但awk读取一行,切割成字段,以字段(列)为单位,进行细节处理。

相关推荐:《Linux视频教程

以上是linux中sed和awk有什麼差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Android TV Box 獲得非官方 Ubuntu 24.04 升級 Android TV Box 獲得非官方 Ubuntu 24.04 升級 Sep 05, 2024 am 06:33 AM

Android TV Box 獲得非官方 Ubuntu 24.04 升級

deepseek網頁版入口 deepseek官網入口 deepseek網頁版入口 deepseek官網入口 Feb 19, 2025 pm 04:54 PM

deepseek網頁版入口 deepseek官網入口

deepseek怎麼安裝 deepseek怎麼安裝 Feb 19, 2025 pm 05:48 PM

deepseek怎麼安裝

BitPie比特派錢包app下載位址 BitPie比特派錢包app下載位址 Sep 10, 2024 pm 12:10 PM

BitPie比特派錢包app下載位址

BITGet官方網站安裝(2025新手指南) BITGet官方網站安裝(2025新手指南) Feb 21, 2025 pm 08:42 PM

BITGet官方網站安裝(2025新手指南)

詳解:Shell腳本變數判斷參數指令 詳解:Shell腳本變數判斷參數指令 Sep 02, 2024 pm 03:25 PM

詳解:Shell腳本變數判斷參數指令

Zabbix 3.4 原始碼編譯安裝 Zabbix 3.4 原始碼編譯安裝 Sep 04, 2024 am 07:32 AM

Zabbix 3.4 原始碼編譯安裝

歐易okx安裝包直接進 歐易okx安裝包直接進 Feb 21, 2025 pm 08:00 PM

歐易okx安裝包直接進

See all articles