繁体   English   中英

使用Sed在两个字符串之间获取字符串并拆分

[英]Use Sed to get string between two strings and split

以下sed表达式有什么问题? 我试图获取topic =和遇到的first semi-colon之间的所有topic = ,然后使用逗号作为分隔符拆分为结果。

sed "s/oc.diffusion.topic = ""(.*)"""";/\1/g"| sed "s/$/,/"

这是测试字符串:

   xchangeCommission = true;oc.diffusion.topic = "Oddschecker/category_27/event_9945/subevent_63289835/market_1758201893/bet_.*,Oddschecker/category_27/event_9945/subevent_63289835/market_1758201893/bet_all/topic,Oddschecker/category_27/event_9945/subevent_63289835/market_1758201893/bet_.*/repub_OC//,Oddschecker/category_27/event_9945/subevent_63289835/market_1758201893/bet_all/repub_OC/all,Oddschecker/category_27/event_9945/subevent_63289835/fixture_401188//,Oddschecker/category_27/event_9945/subevent_63289835/fixture_401188/all";var SKY_TRA

使用sed

sed  's/.*oc.diffusion.topic = "\([^"]*\)".*/\1/' file

Oddschecker/category_27/event_9945/subevent_63289835/market_1758201893/bet_.*,Oddschecker/category_27/event_9945/subevent_63289835/market_1758201893/bet_all/topic,Oddschecker/category_27/event_9945/subevent_63289835/market_1758201893/bet_.*/repub_OC//,Oddschecker/category_27/event_9945/subevent_63289835/market_1758201893/bet_all/repub_OC/all,Oddschecker/category_27/event_9945/subevent_63289835/fixture_401188//,Oddschecker/category_27/event_9945/subevent_63289835/fixture_401188/all

说明

  • [^"]*将轻松命令命令,以获得没有双引号的所有字符。

或使用grep

grep -Po "(?<=topic = \")[^\"]*" file

看到接受答案后,我现在知道你的期望了。

sed  's/,/\n/g;s/.*\"\(.*\)\".*/\1/' file

Oddschecker/category_27/event_9945/subevent_63289835/market_1758201893/bet_.*
Oddschecker/category_27/event_9945/subevent_63289835/market_1758201893/bet_all/topic
Oddschecker/category_27/event_9945/subevent_63289835/market_1758201893/bet_.*/repub_OC//
Oddschecker/category_27/event_9945/subevent_63289835/market_1758201893/bet_all/repub_OC/all
Oddschecker/category_27/event_9945/subevent_63289835/fixture_401188//
Oddschecker/category_27/event_9945/subevent_63289835/fixture_401188/all

由于您拥有的文本是引号之间的唯一文本,因此您可以使用此简单的awk

awk -F\" '{print $2}' file
Oddschecker/category_27/event_9945/subevent_63289835/market_1758201893/bet_.*,Oddschecker/category_27/event_9945/subevent_63289835/market_1758201893/bet_all/topic,Oddschecker/category_27/event_9945/subevent_63289835/market_1758201893/bet_.*/repub_OC//,Oddschecker/category_27/event_9945/subevent_63289835/market_1758201893/bet_all/repub_OC/all,Oddschecker/category_27/event_9945/subevent_63289835/fixture_401188//,Oddschecker/category_27/event_9945/subevent_63289835/fixture_401188/all

像这样?

sed 's/[^"]*"//;s/".*//;y/,/\n/'

要么

awk '!/;/' RS='[",]'

结果

Oddschecker/category_27/event_9945/subevent_63289835/market_1758201893/bet_.*
Oddschecker/category_27/event_9945/subevent_63289835/market_1758201893/bet_all/topic
Oddschecker/category_27/event_9945/subevent_63289835/market_1758201893/bet_.*/repub_OC//
Oddschecker/category_27/event_9945/subevent_63289835/market_1758201893/bet_all/repub_OC/all
Oddschecker/category_27/event_9945/subevent_63289835/fixture_401188//
Oddschecker/category_27/event_9945/subevent_63289835/fixture_401188/all

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM