linux 带有字段值条件的剪切命令

linux cut command with field-value condition

我正在尝试找出一个 linux shell 命令,它将显示日志中满足其他字段条件的字段的一部分。

示例日志文件:

2013-04-15;admin@abc.com;111111@abc.com;outgoing;24;headline
2013-04-15;222222@abc.com;admin@abc.com;incoming;0;chat
2013-04-15;admin@abc.com;333333@abc.com;outgoing;26;headline
2013-04-15;444444@abc.com;333333;incoming;12;chat
2013-04-16;444444@abc.com;555555;incoming;0;chat

我试图仅显示字段 2 和 3 中由分隔符“;”分隔的唯一编号其中字段 5 != 0

示例预期输出:

111111
333333
444444
grep -Po '\d+(?=([^;]*;)?[^;]*;[^;]+;[^0][^;]*;[a-z]+$)' logfile|sort -u

应该是不言自明的。哈哈

$ awk -F";" '!=0{print , }' fields.txt | grep -o '[0-9]\+' | sort -u
111111
333333
444444

说明:根据第5列的值提取第2列和第3列;只匹配数字;消除重复项