2016-11-30 31 views
1

所以我有一個grep的這樣的文字:awk將打印基於條件的特定列

$ bppllist -allpolicies -l | egrep 'INFO|CLASS ' 
CLASS DEV_DC1_MSSQL_Daily *NULL* 0 760000 0 *NULL* 
INFO 15 0 0 3590 *NULL* 0 0 2147483647 0 0 0 0 0 0 0 0 0 0 1359375508 D2135AE2694411E293B100C0DD0FD650 1 0 0 0 0 0 0 0 2 0 0 0 0 0 0 3 0 93 0 0 0 0 0 0 1 
CLASS DEV_DC1_MSSQL_Daily_TL *NULL* 0 760000 0 *NULL* 
INFO 15 0 0 3590 *NULL* 0 0 2147483647 0 0 0 0 0 0 0 0 0 0 1359375508 538E4964610F11E5B3CB00C0DD0FD650 1 0 0 0 0 0 0 0 2 0 0 0 0 0 0 3 0 50 0 0 0 0 0 0 1 
CLASS DEV_DC1_MSSQL_Monthly *NULL* 0 760000 0 *NULL* 
INFO 15 0 0 3590 *NULL* 0 0 2147483647 0 0 0 0 0 0 0 0 0 0 1359375508 53B1F616610F11E5A02E00C0DD0FD650 1 0 0 0 0 0 0 0 2 0 0 0 0 0 0 3 0 58 0 0 0 0 0 0 1 

而且我想在一行中的awk這一點,如果可能獲得CLASS行和12日的第2列INFO行的列。我在SunOS 5.10 sun4v sparc SUNW

我試圖做這樣的:

bppllist -allpolicies -l | egrep 'INFO|CLASS ' | awk '($1 == "CLASS ") && ($2 == "INFO") { print $2 $12}' 

但我認爲這只是一個沒有空調的過濾兩倍。

此外,有什麼辦法讓他們在這種格式?

DEV_DC1_MSSQL_Daily 0 
DEV_DC1_MSSQL_Daily_TL 0 
DEV_DC1_MSSQL_Monthly 0 

回答

3

就這樣說:對了

$ awk '$1=="CLASS" {print $2} $1=="INFO" {print $12}' file 
DEV_DC1_MSSQL_Daily 
0 
DEV_DC1_MSSQL_Daily_TL 
0 
DEV_DC1_MSSQL_Monthly 
0 

請注意,您以前egrep "INFO|CLASS "可能也沒有必要用這個條件。


產生緊湊的輸出,尋找「CLASS」的時候正好趕上的價值,並打印在「INFO」時:

$ awk '$1=="CLASS" {c=$2} $1=="INFO" {print c, $12}' file 
DEV_DC1_MSSQL_Daily 0 
DEV_DC1_MSSQL_Daily_TL 0 
DEV_DC1_MSSQL_Monthly 0 
+1

該死的,我開始用這個1 ... don'不知道我做錯了什麼,並開始測試新的代碼。謝謝你的男人 – Xao

+0

是有posibility有他們這樣的: DEV_DC1_MSSQL_Daily 0 DEV_DC1_MSSQL_Daily_TL 0 DEV_DC1_MSSQL_Monthly 0 – Xao

+0

@ user3034160請更新您原來的問題,因爲在註釋中是不可能區分的文件應該是什麼樣子等。例如 – fedorqui