我想要摆脱的模式是这样的: 一个城市后跟一个方向指示箭头( - >或< - ),然后是另一个城市,然后是另一个指向箭头。
我想,也许是因为我没有逃脱一些角色,但我试图逃避它们,并没有得到所需的结果。
我运行此命令:
grep -o '(\|stockholm\|paris\|tokyo){1}[<->]{2}(\|stockholm\|paris\|tokyo){1}[<->]{2}'
对像这样的文本数据:
tokyo->paris->$NILL1110102.8 fubar$`BLACKFri$$$SunBluePurpleOct011001Sun3.1415
Sun[<-->]0000103.14011010taoNILL$101101010001`3.14153$$$$$$phiparis->paris->
paris<-tokyo<-RedOrange
2.8VOID'$$[<-->]000010WHITEstockholm->stockholm->WHITE2.8taoSunWHITEphifooblah
FriNILLtao`paris<-tokyo<-WHITEVOIDNULLOrange101000phifubarOct$VOIDMon'[<-<-]$$
001100blah[<-<-]stockholm->paris->fubarfubar'FebYellow[<-->]NovNULL011001WHITE`$
我写的grep命令确实选择了城市,但没有指向箭头,我想知道为什么以及是否有人可以为我提供一些亮点。
感谢。
编辑:请不要使用sed或perl或其他任何不同的解决方案,我希望在这里了解我的错误,谢谢。
输出我得到:
paris
paris
paris
stockholm
stockholm
paris
stockholm
paris
期望的输出;
stockholm->stockholm->
paris<-tokyo<-
stockholm->paris->
答案 0 :(得分:1)
我认为这会做你想要的吗?
grep -Eo '(stockholm|paris|tokyo){1}[<>-]{2}(stockholm|paris|tokyo){1}[<>-]{2}' jozo
tokyo->paris->
paris->paris->
paris<-tokyo<-
stockholm->stockholm->
paris<-tokyo<-
stockholm->paris->