Linux 瑞士軍刀 awk cmd

2021-05-14 09:31:10 字數 2284 閱讀 6291

linux awk 命令應用:

awk的語法:

awk [ -f re] [parameter...] ['prog'] [-f progfile][in_file...]

引數說明:

-f re:允許awk更改其欄位分隔符。

parameter: 該引數幫助為不同的變數賦值。

'prog': awk的程式語句段。這個語句段必須用單拓號:'和'括起,以防被shell解釋。這個程式語句段的標準

形式為:

'pattern '

其中pattern引數可以是egrep正規表示式中的任何乙個,它可以使用語法/re/再加上一些樣式匹配技巧構成。

action引數總是被大括號包圍,它由一系統awk語句組成,各語句之間用";"分隔。

變數名 含義

argind  命令列中檔案序號

argc 命令列引數的個數

argv 命令列引數陣列

filename 當前輸入檔名

fnr 當前檔案中的記錄號

fs 輸入域分隔符,預設為乙個空格

rs 輸入記錄分隔符

nf 當前記錄裡域個數(列)

nr 到目前為止記錄數(行)

ofs 輸出域分隔符

ors 輸出記錄分隔符

下面以/etc/passwd為例:

注釋:/etc/passwd檔案是linux/unix安全的關鍵檔案之一.該檔案用於使用者登入時校驗 使用者的口令,當然應當僅對root可寫.檔案中每行的一般格式為:

logname:password:uid:gid:userinfo:home:shell

每行的頭兩項是登入名和加密後的口令,後面的兩個數是uid和gid,接著的 一項是系統管理員想寫入的有關該使用者的任何資訊,最後兩項是兩個路徑名: 乙個是分配給使用者的home目錄,第二個是使用者登入後將執行的shell(若為空格則 預設為/bin/sh).

在命令列使用awk :

例:將列印當前行的全部內容:

awk '' /etc/passwd

awk '' /etc/passwd

例:顯示/etc/passwd 中的行號和以「:」分隔的第1列:

awk -f":" '' /etc/passwd

例:顯示/etc/passwd 匹配(含有)字串"root"的所有行。

awk '/root/' /etc/passwd

由於顯示整個記錄(全行)是awk的預設動作,因此可以省略action項。

awk '/root/' /etc/passwd

例:它將顯示第乙個匹配p或p的行與第乙個匹配m或m的行之間的行,並顯示到標準輸出上:

awk '/[pp]/,/[mm]/ ' /etc/passwd

例:下面的示例顯示了內建變數和內建函式length的使用:

awk 'length>50 ' /etc/passwd

該命令行將顯示/etc/passwd中所有超過50個字元的行號。

awk的流程控制 :

awk提供的完備的流程控制語句類似於c語言,這給我們程式設計帶來了極大的方便。

1、begin和end:

在awk 中兩個特別的表示式,begin和end,這兩者都可用於pattern中(參考前面的awk語法),提供begin和end的作用是給程式賦予初始狀態和在程式結束之後執行一些掃尾的工作。任何在begin之後列出的操作(在{}內)將在awk開始掃瞄輸入之前執行,而end之後列出的操作將在掃瞄完全部的輸入之後執行。因此,通常使用begin來顯示變數和預置(初始化)變數,使用end來輸出最終結果。

例:累計銷售檔案xs中的銷售金額(假設銷售金額在記錄的第三字段):

awk>'begin

>

>end ' sx

(注:>是shell提供的第二提示符,如要在shell程式awk語句和awk語言中換行,則需在行尾加反斜槓/)在這裡,begin預置了內部變數fs(字段分隔符)和自定義變數total,同時在掃瞄之前顯示出輸出行頭。而end則在掃瞄完成後列印出總合計。

注釋:在awk中呼叫系統變數必須用單引號,如果是雙引號,則表示字串

flag=abcd

awk '' 結果為abcd

awk '' 結果為$flag

表示式與**塊:

$2 == "fred"    //顯示第二域為fred的第三個域

$1 ~ /root/   //顯示第一域匹配root的第三個域

例如:[root@localhost ~]# awk -f":" '$1 ~ /root/ ' /etc/passwd

root:x:0:0:root:/root:/bin/bash

瑞士軍刀 NC用法

瑞士軍刀 nc.exe 引數說明 h 檢視幫助資訊 d 後台模式 e prog程式重定向,一但連線就執行 危險 i secs延時的間隔 l 監聽模式,用於入站連線 l 監聽模式,連線天閉後仍然繼續監聽,直到ctr c n ip位址,不能用網域名稱 o film記錄16進製制的傳輸 p 空格 埠 本地...

Linux 命令篇 之 瑞士軍刀

netcat哈哈中文名字網路貓,是不是很可愛的名字,但是你知道它是鼎鼎大名網路工具中的瑞士軍刀,它能通過tcp和udp在網路中讀寫資料。通過與其他工具結合和重定向,你可以在指令碼中以多種方式使用它。nc工具可以勝任一切與根tcp和udp有關的一切操作 很多公司不會使用第三方的聊天工具因為他們害怕會洩...

瑞士軍刀redis 慢查詢

慢查詢 pipeline 發布訂閱 bitmap hyperloglog geo生命週期 兩個配置 三個命令 運維經驗 生命週期 1 傳送命令 2 排隊 3 執行命令 4 返回結果兩點說明 1 慢查詢發生在第三階段 2 客戶端超時不一定慢查詢,但慢查詢時客戶端超時的乙個可能因素 先進先出佇列 固定長...