第九周作業

awk基礎

簡介

       AWK是一種優良的文本處理工具。它是 Linux 中也是任何環境中現有的功能最強大
的數據處理引擎之一,相比sed常常作用于一整行的處理,awk比較傾向于將一行分成數
個“字段”來處理。所以,awk相當適合處理小型的數據處理。

基礎用法

awk[選項] ‘program’ var=value file…
awk[選項] -f programfilevar=value file…
awk[選項] 'BEGIN{ 動作;… } pattern{ 動作;… } END{ 動作;… }' file ...
  • awk程序通常由:BEGIN語句塊、能夠使用模式匹配的通用語句塊、END語句塊,共3部分組成

  • program通常是被單引號或雙引號中

示例

  • awk主要是處理每一行的字段內的數據,而默認的字段的分隔符為空格鍵或[TAB]鍵。舉例說明,我們用cat /etc/passwd這個可以查看用戶:

第九周作業

  • 若我想取出用戶名稱和shell類型,且名稱與shell類型以冒號隔開,則成這樣:
awk  -F: '{print $+1":"$7} ' /etc/passwd

第九周作業

  • 這是awk最常用的動作,通過print的功能將字段數據列出來,字段的分割可以自己選擇 以什么方式隔開,-F指定域分隔符為’:’。

系統變量

  • OFS                   輸出字段分隔符,默認為空白字符
  • FS                      輸入字段分隔符,默認為空白字符
  • ORS                   輸出記錄分隔符,輸出時用指定符號代替換行符
  • RS                      輸入記錄分隔符,指定輸入時的換行符,原換行符仍有效
  • NF                      每一行的字段數量
  • NR                      行數
  • FNR                    各個文件分別計數,行數
  • ARGC                  命令行的參數個數
  • ARGV                  數組,保存的是命令行所給定的各參數
  • FILENAME        當前文件名

此外,$0變量是指整條記錄,$1表示當前行的第一個域,$2表示當前行的第二個域,……以此類推。


自定義變量(區分字符大小寫)

  • -v var=value

  • 在program中直接定義

兩種方法:

VAR=10000;echo | awk -v VARIABLE=$VAR '{ print VARIABLE }'
var1="aaa";var2="bbb";echo | awk '{ print v1,v2 }' v1=$var1 v2=$var2

選項參數

  • -F

指明輸入時用到的字段分隔符 。

  • -v var=value

自定義變量。


要點

  1. 逗號分隔符
  2. 輸出的各item可以字符串,也可以是數值;當前記錄的字段、變量或awk的表達式
  3. 如省略item,相當于print $0

printf命令

格式化輸出:

printf“FORMAT”, item1, item2, ...

  1. 必須指定FORMAT
  2. 不會自動換行,需要顯式給出換行控制符,
  3. FORMAT中需要分別為后面每個item指定格式符

格式符

  • %c      顯示字符的ASCII碼
  • %d      顯示十進制整數
  • %i       顯示十進制整數
  • %e      顯示科學計數法數值
  • %E      顯示科學計數法數值
  • %f       顯示為浮點數
  • %g       以科學計數法或浮點形式顯示數值
  • %G      以科學計數法或浮點形式顯示數值
  • %s       顯示字符串
  • %u      無符號整數
  • %%     顯示%自身

awk -F: '{printf"%s",$1}' /etc/passwd

第九周作業

修飾符

  1. /#[.#]:第一個數字控制顯示的寬度;第二個#表示小數點后精度,%3.1f
  2. -: 左對齊(默認右對齊)%-15s
  3. +:顯示數值的正負符號%+d

awk -F: '{printf "%-20s %10d\n",$1,$3}' /etc/passwd

第九周作業

awk -F: '{printf "Username:%-15s,UID:%d\n",$1,$3}' /etc/passwd

第九周作業


原創文章,作者:Az2h1丶,如若轉載,請注明出處:http://www.www58058.com/81522

(0)
Az2h1丶Az2h1丶
上一篇 2017-07-16 21:45
下一篇 2017-07-16 22:09

相關推薦

  • 作業練習題匯總

    需要用到的命令補充  文件通配符                                            …

    2017-07-22
  • Redis 代理服務Twemproxy

    1、twemproxy explore       當我們有大量 Redis 或 Memcached 的時候,通常只能通過客戶端的一些數據分配算法(比如一致性哈希),來實現集群存儲的特性。雖然Redis 2.6版本已經發布Redis Cluster,但還不是很成熟適用正式生產環境。 Redis 的 Clust…

    Linux干貨 2015-04-04
  • btrfs初步應用

    前言 一種技術要知其然,還要知其所以然。 Btrfs文件系統 Btrfs(B-tree文件系統,通常念成Butter FS,Better FS或B-tree FS),一種支持寫入時復制(COW)的文件系統,運行在Linux操作系統,采用GPL授權。Oracle于2007年對外宣布這項計劃,并發布源代碼,在2014年8月發布穩定版目標是替換Linux目前的ex…

    Linux干貨 2016-05-22
  • linux文件權限

    一、前言 在linux中,每個目錄或者文件都有相對應的權限,linux通過文件屬主(user),文件屬組(group),其它人(order)對一個文件或者目錄控制讀寫執行權限,當然在這些基本權限之外還有特殊權限,facl(file access control list)等。 二、文件基本權限    2.1:屬主、屬組、order概念 &…

    Linux干貨 2015-08-17
  • linux入門

    linux入門 Centos中分root用戶和普通用戶,root為超級管理員,幾乎具有所有的系統控制 剛進入linux系統,Ctrl+Alt+F[1-6]可以切換虛擬終端  (tty) 圖形終端:CentOS 6: Ctrl + Alt + F7       CentOS 7:在哪個終端啟動,即位于哪個虛擬終端 偽終端…

    Linux干貨 2017-02-16
  • lvs應用

    練習一:負載均衡一個php應用: 測試是否需要會話保持; 是否需要用到共享存儲;    為了檢測是否需要會話保持和共享存儲,要在兩臺主機上分別配置LAMP環境;這樣就使得兩者之間沒有了共享存儲;負載均衡使用nat模型的wlc算法,并且不使用lvs的長連接選項。數據庫故意使用了相同的賬號密碼來進行安裝。 步驟一:配置環境: 使用yum分別安…

    Linux干貨 2016-11-11
欧美性久久久久