awk将打印基于条件的特定列
问题描述:
所以我有一个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
答
就这样说:对了
$ 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 ... don'不知道我做错了什么,并开始测试新的代码。谢谢你的男人 – Xao
是有posibility有他们这样的: DEV_DC1_MSSQL_Daily 0 DEV_DC1_MSSQL_Daily_TL 0 DEV_DC1_MSSQL_Monthly 0 – Xao
@ user3034160请更新您原来的问题,因为在注释中是不可能区分的文件应该是什么样子等。例如 – fedorqui