【发布时间】:2013-11-28 08:10:59
【问题描述】:
如何获取所有具有“client_type=0”的“clid”?管道字符“|”分隔每个客户信息。我的文字只有一行:
clid=2 cid=3346 client_database_id=5153 client_nickname=xLukas\s\p\sLukas client_type=0|clid=3 cid=3346 client_database_id=1 client_nickname=powered\sby\sMirWayne.DE client_type=1|clid=4 cid=3346 client_database_id=9661 client_nickname=编号\sone client_type=0|clid=5 cid=3469 client_database_id=1 client_nickname=powered\sby\sMirWayne client_type=1|clid=6 cid=1716 client_database_id=1 客户端昵称=FG\sBot 客户端类型=1|clid=7 cid=3469 client_database_id=9661 client_nickname=号码\stwo client_type=0|clid=8 cid=1762 client_database_id=4351 客户昵称=pr0zkillz1x\pTobi 客户类型=0|clid=9 cid=1764 client_database_id=5160 client_nickname=xL1mited\s/\sMax client_type=0|clid=10 cid=1716 client_database_id=9704 客户昵称=Sebi 客户类型=0|clid=13 cid=3346 client_database_id=4336 client_nickname=checker284\s\p\sSebbo client_type=0|clid=19 cid=1762 client_database_id=9312 客户昵称=pr0skillz1x\pDanie 客户类型=0|clid=30 cid=3346 client_database_id=9697 client_nickname=TeamSpeakUser client_type=0|clid=33 cid=1716 client_database_id=1 client_nickname=serveradmin client_type=1
我需要所有的clid,它的client_type=0 在一个额外的行中。比如这样:
clid=2
clid=3
clid=4
clid=5
...
我当前的解决方案不起作用:
cat clientlist.txt | grep -Eo "clid=[0-9]+[\d\D]*client_type=0" | grep -Eo "clid=[0-9]+"
有人可以帮忙吗?
【问题讨论】:
-
cat将文件转换为 grep?你肯定是在开玩笑!grep ... clientlist.txt | ...每次调用可节省大约十亿个 CPU 周期。 -
什么更好?我会使用每个可行的解决方案,但目前我没有。
-
最好避免无用的猫和无用的管道。你开车时不会踩刹车,对吗?
标签: regex linux shell substring