awk編輯器

目錄

工作原理

命令格式

普通格式

BEGIN格式

語句循環格式

awk常見的內建變量(可直接用)

按行打印行內容

統計行數量

按字段輸出文本

通過管道、雙引號調用 Shell 命令


awk編輯器是一種流編輯器

工作原理

  • 逐行讀取文本,默認以空格或tab鍵為分隔符進行分隔,將分隔所得的各個字段保存到內建變量中,并按模式或者條件執行編輯命令。
  • awk信息的讀入也是逐行讀取的,執行結果可以通過print的功能將字段數據打印顯示。
  • 在使用awk命令的過程 中,可以使用邏輯操作符“&&“表示“與”、“||“表示“或”、“!“表示“非”;還可以進行簡單的數學運算,如+、-、*、/、%、^分別表示加、減、乘、除、取余和乘方。

命令格式

普通格式

awk 選項 '模式或條件 {操作}' 文件 1 文件 2 …? ? ? #對文件1,文件2進行操作
awk -f 腳本文件 文件 1 文件 2 …? ? ? ? ? ? ? ? ? ? ? ? ? ?#用腳本對對文件1,文件2進行操作

BEGIN格式

awk 'BEGIN {...}; 條件{...}; END {...}' ?文件? ? ?

  • ? BEGIN {...} ? 表示處理文件前要執行的操作
  • ? 條件{...} ? ? 表示對匹配滿足指定條件的文件行內容要執行的操作
  • ? END {...} ? ? 表示處理完文件所有行內容后要執行的操作

語句循環格式

awk '{控制語句條件 {操作}}' 文件

awk 'if(條件表達式) {操作}' 文件? ? ? ? ? ? ? ? ? ? ? ? ? ? ??#行內容滿足if的條件則執行操作??

awk '變量=條件表達式?值1:值2; {操作}' 文件 ? ? ?

?#行內容是否條件表達式,如果條件成立則變量取值1,條件不成立則變量取值2

awk 'BEGIN{執行循環前的操作; while("命令" | getline) 每次循環的操作; 執行循環完后的操作}'? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#使用while循環對每行內容執行操作
?

awk常見的內建變量(可直接用)

  • FS:列分割符。指定每行文本的字段分隔符,默認為空格或制表位。與"-F"作用相同
  • NF:當前處理的行的字段個數。
  • NR:當前處理的行的行號(序數)。
  • $0:當前處理的行的整行內容。
  • $n:當前處理行的第n個字段(第n列)。
  • FILENAME:被處理的文件名。
  • RS:行分隔符。awk從文件上讀取資料時,將根據RS的定義把資料切割成許多條記錄,而awk一次僅讀入一條記錄,以進行處理。預設值是'\n'
  • FNR:awk當前讀取的記錄數,其變量值小于等于NR(比如當讀取第二個文件時,FNR是從0開始重新計數,而NR不會)。
    NR==FNR:用于在讀取兩個或兩個以上的文件時,判斷是不是在讀取第一個文件

按行打印行內容

awk '{print $0}' 文件? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#打印文件里所有內容

awk 'NR=1{print $0}' 文件? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #打印文件里第一行內容

awk 'NR=1,NR=3{print $0}' 文件? ? ? ? ? ? ? ? ? ? #答應文件里第一行到第三行的內容

awk 'NR>=80{print $0}' 文件? ? ? ? ? ? ? ? ? ? ? ? ? #打印文件里80行以后的內容

awk '(NR>=70)&&(NR<=80){print $0}' 文件? ?#打印文件70行到80行的內容

awk '(NR>=70)||(NR<=80){print $0}' 文件? ? ? #打印文件70行和80行的內容

awk '(NR<=3)||(NR>=80){print $0}' 文件?? ? ? ?#打印文件前3行和后80行的內容

awk '(NR%)==1 {print $0}' 文件? ? ? ? ? ? ? ? ? ? ? #打印文件奇數行

awk '{print $0;getline}' 文件? ? ? ? ? ? ? ? ? ? ? ? ? ??#打印文件奇數行? ?getline為跳到下一行

awk '(NR%)==0 {print $0}' 文件? ? ? ? ? ? ? ? ? ? ??#打印偶數行

awk '{getline;print $0}' 文件? ? ? ? ? ? ? ? ? ? ? ? ? ??#打印偶數行? ? ? ? ? ?getline為跳到下一行? ?

awk '/root/{print $0}' 文件? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#打印包含root的行內容

awk '/\/bin\/bash$/{print $0}' 文件? ? ? ? ? ? ? ? ? ?#打印以/bin/bash結尾的行內容???

統計行數量

awk 'BEGIN {X=0}; /bash$/ {x++};END {print x}' 文件? ? ? #統計以bash結尾的行數

awk 'BEGIN {n=0;while("who" | getline)n++; print $n}'? ?#統計who命令的有多少行

按字段輸出文本

默認以空格或tab鍵為分隔符進行分隔

awk -F ":" '{print $3}' 文件? ? ? ? ? ? ? ? ? ?#輸出每行中(以:分隔)的第3個字段
awk -F ":" '{print $1,$3}' 文件? ? ? ? ? ? ? #輸出每行中(以:分隔)的第1、3個字段

awk -F ":" '$3<5{print $1,$3}' 文件? ? ?

#輸出每行(以:分隔)第3個字段的值小于5的第1、3? 個字段內容

awk -F ":" '!($3<200){print $0}' 文件? ? ? ? ? ? ? ?#輸出每行第3個字段的值不小于200的行
awk -F ":" '/bash$/ {print $1":"$3}' 文件? ? ? ?

#輸出每行以bash結尾的,并且以:分隔的第?一個字段和第三個字段,最后以:分隔輸出內容

awk -F ":" '$3<5{print $1,$3,$NF}' 文件? ? ?

#輸出每行(以:分隔)第3個字段的值小于5的第1、3個字段和最后一個字段內容?

awk -F ":" '$3<5{print NR,$0}' 文件? ? ? ? ? ? ? ? ? ? ? ??#打印行號,同行輸出?

awk -F ":" '$3<5{print NR} $3<5{print $0}' 文件? ? #打印行號,不同行輸出?

awk -F ":" '$3~“bash”{print $0}' 文件? ? ? ? ? ? ?

?#輸出每行中(以:分隔)的第3個字段包含bash的行內容? ? ? ? ? ?~ 表示包含的意思

通過管道、雙引號調用 Shell 命令

echo $PATH | awk 'BEGIN{RS=":"};END{print NR}'? ? ?

#統計以冒號分隔的文本段落數,END{}語句塊中,往往會放入打印結果等語句

awk -F: '/bash$/{print | "wc -l"}' /etc/passwd? ? ? ??

#調用 wc -l 命令統計使用 bash 的用戶個數,等同于 grep -c "bash$" /etc/passwd

free -m | awk '/Mem:/ {print int($3/($3+$4)*100)"%"}'?? ?#查看當前內存使用百分比

top -b -n 1 | grep Cpu | awk -F ',' '{print $4}' | awk '{print $1}'?

?#查看當前CPU空閑率,(-b -n 1 表示只需要1次的輸出結果)

date -d "$(awk -F "." '{print $1}' /proc/uptime) second ago" +"%F %H:%M:%S"?

?#顯示上次系統重啟時間

awk 'BEGIN {n=0 ; while ("w" | getline) n++ ; {print n-2}}'?

#調用w命令,并用來統計在線用戶數

awk 'BEGIN {"hostname" | getline ; {print $0}}'?? ?#調用 hostname,并輸出當前的主機名

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

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

相關文章

二叉樹,先序遍歷、中序遍歷、后序遍歷和層序遍歷實現 C++

二叉樹基類聲明 template<typename T>class Tree{protected:Tree() default;virtual ~Tree() default;virtual const Tree& root()const 0;virtual Tree& root() 0;virtual const Tree& left()const 0;virtual const Tree& right()const 0;virtua…

java第十八課 —— 重載、可變參數

方法重載 基本介紹 java 中允許同一個類中&#xff0c;多個同名方法的存在&#xff0c;但要求形參列表不一致&#xff01; 比如&#xff1a;System.out.println(); out 是 PrintStream 類型 重載的好處 減輕了起名的麻煩減輕了記名的麻煩 注意事項和使用細節 方法名&…

【Vue】Vue2中的Vuex

目錄 Vuex介紹Vuex 中的核心概念 在vue2中使用Vuex安裝 Vuex創建一個 Vuex Store在 Vue 實例中使用 Vuex編寫 Vuex 的 state、mutations 和 actions在組件中使用 Vuex Vuex的核心State組件中獲取 Vuex 的狀態mapState 輔助函數對象展開運算符 Getter基本使用示例 通過屬性訪問通…

從多站點到多活,XEOS 對象數據容災能力再提升

近日&#xff0c; XSKY SDS V6.4 新版本發布&#xff0c;其中 XEOS V6.4 全新升級并完善了統一命名空間功能&#xff0c;更進一步增強和完善了異地容災方案&#xff0c;配合強一致代理讀&#xff0c;可以實現異地多活&#xff1b;同時大幅降低管理復雜度&#xff0c;有效降低容…

Nginx中的limit_req模塊和limit_conn模塊詳解

引言 在高流量場景下&#xff0c;良好的限流和連接控制策略至關重要&#xff0c;以防止服務器過載&#xff0c;確保服務穩定性和高可用性。Nginx 提供了 limit_req 和 limit_conn 模塊&#xff0c;用以實現請求頻率和并發連接數的限制。本文將詳細介紹這兩個模塊的生效階段和生…

TikTok電商帶貨特訓營,跟隨時代潮流,跨境掘金(8節課)

課程內容&#xff1a; 1-先導課 2-一、店鋪運營認知與思路 3-二、店鋪風控注意事項 4-三、美區Tiktok前期工作-1店鋪入駐模式 5-三、美區Tiktok前期工作-2指紋瀏覽器介紹 6-三、美區Tiktok前期工作-4綁定電話號碼 7-三、美區Tiktok前期工作-5添加倉庫地址 8-三、美區Ti…

GIS讀研與求職準備:植被定量遙感專業研0

本文介紹植被定量遙感專業研究生入學初期&#xff0c;為將來從事開發類工作所作求職準備的規劃路徑、方向選擇等方面的建議。 前面提到了&#xff0c;最近有很多師弟師妹詢問關于研究生方向選擇、求職準備等方面的問題。因為很多朋友的提問比較有共性&#xff0c;所以會在征得對…

【秒殺系統】從零開始打造簡易秒殺系統(一):防止超賣

【秒殺系統】從零開始打造簡易秒殺系統&#xff08;一&#xff09;&#xff1a;防止超賣 前言 大家好&#xff0c;好久不發文章了。&#xff08;快一個月了- -&#xff09;最近有很多學習的新知識想和大家分享&#xff0c;但無奈最近項目蠻忙的&#xff0c;很多文章寫了一半擱…

redis筆記1

1-nosql&#xff08;非關系型數據庫&#xff09; 定位緩存&#xff0c;提高數據讀寫速度&#xff0c;減輕對數據儲存與訪問壓力&#xff0c;不建議存敏感數據&#xff08;重要數據&#xff09;。 2-特征 &#xff08;1&#xff09;鍵值&#xff08;key-value&#xff09;型 &a…

【面試】Oracle JDK和Open JDK什么關系?

目錄 1. 起源與發展2. 代碼與許可3. 功能與組件4. 使用場景5. 版本更新與支持 1. 起源與發展 1.Oracle JDK是由Oracle公司基于Open JDK源代碼開發的商業版本。2.Open JDK是java語言的一個開源實現。 2. 代碼與許可 1.Oracle JDK包含了閉源組件&#xff0c;并根據二進制代碼許…

深入Java:JSON解析與操作的藝術

哈嘍&#xff0c;大家好&#xff0c;我是木頭左&#xff01; 一、初識JSON&#xff1a;數據格式的優雅舞者 在現代Web開發中&#xff0c;JSON&#xff08;JavaScript Object Notation&#xff09;以其輕量級和易于閱讀的特點成為了數據交換的首選格式。它基于JavaScript的一個…

用最通俗的話理解什么是協程

參考&#xff1a; 用最通俗的話理解什么是協程-CSDN博客

FreeRTOS_信號量_學習筆記

信號量的特性 消息隊列用于傳輸多個數據&#xff0c;但是有時候我們只需要傳遞狀態&#xff0c;這個狀態值需要用一個數值表示。套用隊列筆記中的流水線例子&#xff0c;可以理解為流水線上工件的數量。 信號&#xff1a;起通知作用 量&#xff1a;還可以用來表示資源的數量 當…

打印機手動雙面打印技巧

一、WORD和PDF &#xff08;1&#xff09;首先選擇要打印的頁面范圍&#xff0c;然后選擇僅奇數頁打印 &#xff08;2&#xff09;將打印完的紙張翻過來&#xff0c;白紙朝上&#xff0c;紙張的頭部先放入打印機 &#xff08;3&#xff09;選擇要打印的頁面范圍&#xff0c;然…

oracle.jdbc.OracleDatabaseException: ORA-00911: 無效字符

先吐槽一句&#xff0c;oracle 真坑啊&#xff01; 一個很正常的sql 語句一直報 ORA-00911: 無效字符 &#xff0c;拿到數據庫去執行一點問題沒有&#xff0c;一運行代碼就報錯&#xff0c;然后一個字符一個字符的對比&#xff0c;竟然是因為sql 結尾的一個 ";" 導致…

TP6開發文檔概述

TP6&#xff08;ThinkPHP 6&#xff09;是一個使用PHP語言開發的快速、兼容且簡單的面向對象開發框架。以下是一個簡化的TP6開發文檔概述&#xff0c;涵蓋了核心功能和一些常用方法&#xff1a; 一、環境準備 PHP安裝&#xff1a;確保已經安裝了與TP6兼容的PHP版本。 Composer…

PHPIPAM在建立數據庫階段報錯

如題&#xff0c;參考大佬的操作IP地址管理系統phpipam部署-CSDN博客搭建PHPIPAM&#xff0c;不過我沒有選擇1.4&#xff0c;而是直接搭建了1.6版本&#xff0c;一切順利&#xff0c;到了最后建立數據庫階段&#xff0c;輸入數據庫賬號和密碼后提示Cannot install sql SCHEMA f…

大模型部署_書生浦語大模型 _作業2

本節課可以讓同學們實踐 4 個主要內容&#xff0c;分別是&#xff1a; 1、部署 InternLM2-Chat-1.8B 模型進行智能對話 1.1安裝依賴庫&#xff1a; pip install huggingface-hub0.17.3 pip install transformers4.34 pip install psutil5.9.8 pip install accelerate0.24.1…

Elasticsearch之文本分析

文本分析基本概念 官網&#xff1a;Text analysis | Elasticsearch Guide [7.17] | Elastic 官網稱為文本分析&#xff0c;這是對文本進行一直分析處理的方式&#xff0c;基本處理邏輯是為按照預先制定的分詞規則&#xff0c;把原本的文檔進行分割成多個小顆粒度的詞項&#x…

Python pands使用引擎實現excel條件格式

截至我的知識更新日期&#xff08;2023年&#xff09;&#xff0c;Pandas 庫本身并不直接支持Excel條件格式。Pandas 是一個強大的Python數據分析庫&#xff0c;它主要用于數據分析和操作&#xff0c;而不是用于創建或編輯Excel文件的格式。 然而&#xff0c;你可以使用 openp…