awk來對檔案進行分析

2021-08-30 11:12:54 字數 1902 閱讀 1868

簡介

例項介紹

假設last -n 5的輸出如下:

[root@www ~]# last -n 5 <==僅取出前五行

root pts/1 192.168.1.100 tue feb 10 11:21 still logged in

root pts/1 192.168.1.100 tue feb 10 00:46 - 02:28 (01:41)

root pts/1 192.168.1.100 mon feb 9 11:41 - 18:30 (06:48)

dmtsai pts/1 192.168.1.100 mon feb 9 11:41 - 11:41 (00:00)

root tty1 fri sep 5 14:09 - 14:10 (00:01)

如果只是顯示最近登入的5個帳號:

#last -n 5 | awk  ''

root

root

root

dmtsai

root

如果只是顯示/etc/passwd的賬戶:

#cat /etc/passwd |awk  -f ':'  ''  

root

daemon

binsys

這種是awk+action的示例,每行都會執行action,-f指定域分隔符為』:』。

如果只是顯示/etc/passwd的賬戶和賬戶對應的shell,而賬戶與shell之間以tab鍵分割:

#cat /etc/passwd |awk  -f ':'  ''

root /bin/bash

daemon /bin/sh

bin /bin/sh

sys /bin/sh

如果只是顯示/etc/passwd的賬戶和賬戶對應的shell,而賬戶與shell之間以逗號分割,而且在所有行新增列名name,shell,在最後一行新增"blue,/bin/nosh"。

cat /etc/passwd |awk  -f ':'  'begin    end '

name,shell

root,/bin/bash

daemon,/bin/sh

bin,/bin/sh

sys,/bin/sh

....

blue,/bin/nosh

awk工作流程是這樣的:先執行beging,然後讀取檔案,讀入有/n換行符分割的一條記錄,然後將記錄按指定的域分隔符劃分域,填充域,$0則表示所有域,1表示

第乙個域

,1表示第乙個域,

1表示第乙個

域,n表示第n個域,隨後開始執行模式所對應的動作action。接著開始讀入第二條記錄······直到所有的記錄都讀完,最後執行end操作。

搜尋/etc/passwd有root關鍵字的所有行:

#awk -f: '/root/' /etc/passwd

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

這種是pattern的使用示例,匹配了pattern(這裡是root)的行才會執行action(沒有指定action,預設輸出每行的內容)。搜尋支援正則,例如找root開頭的: awk -f: 『/^root/』 /etc/passwd。

搜尋/etc/passwd有root關鍵字的所有行,並顯示對應的shell:

# awk -f: '/root/' /etc/passwd             

/bin/bash

這裡指定了action。

使用awk來解析dump檔案

dump檔案是平時工作中經常碰見的,有時候得到乙個dump,但是沒有提供一些更多的資訊,匯入的時候就很可能會有問題。如果某個使用者預設表空間是user,但是dump中的表所屬的表空間是datas01,則匯入的時候會自動轉換表空間。但是如果表中存在lob欄位 且dump的表空間和目標環境的表空間不一致...

NSFileHandle對檔案進行讀寫操作

nslog 路徑 fullpath nsfilehandle filehandle nsfilehandle filehandleforwritingatpath fullpath filehandle seektoendoffile filehandle writedata log datausi...

Unity(C ) 對檔案進行加解密

方法一 直接呼叫加解密方法新增密碼就可以 using system using system.security.cryptography using system.io namespace common 加密類 public class desfile return true return fals...