Linux shell sed 从原始文本中提取“” 中的字符串
博客专区 > jickding 的博客 > 博客详情
Linux shell sed 从原始文本中提取“” 中的字符串
jickding 发表于11个月前
Linux shell sed 从原始文本中提取“” 中的字符串
  • 发表于 11个月前
  • 阅读 19
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 十分钟定制你的第一个小程序>>>   

摘要: 从原始文本中提取“” 中的字符串,并在其前后添加字符串,组成新的字符串
从原始文本中提取“” 中的字符串,并在其前后添加字符串,组成新的字符串

原始文本

dingldeiMac:goahead_release dingl$ cat x
var showWan = '<% getCfgZero(1, "showWanMenu"); %>';
var showCell = '<% getCfgZero(1, "showCellMenu"); %>';
var showApplication = '<% getCfgZero(1, "showApplicationMenu"); %>';
var showgps = '<% getCfgZero(1, "showgpsMenu"); %>';
var showdtu = '<% getCfgZero(1, "showdtuMenu"); %>';
var showgpio = '<% getCfgZero(1, "showgpioMenu"); %>';
var showswitchgw = '<% getCfgZero(1, "showswitchgwMenu"); %>';
var showvoice = '<% getCfgZero(1, "showvoiceMenu"); %>';
var showmsg = '<% getCfgZero(1, "showmsgMenu"); %>';
var showWireless = '<% getCfgZero(1, "showWirelessMenu"); %>';
var showVPN = '<% getCfgZero(1, "showVPNMenu"); %>';
执行下面的shell命令可以得到理想的结果
 cat x | sed -e 's/\(.*\)\"\(.*\)\"\(.*\)/\2/' -e 's/^/nvram_set 2860 /g' -e 's/$/ 1/g'
得到如下结果
nvram_set 2860 showWanMenu 1
nvram_set 2860 showCellMenu 1
nvram_set 2860 showApplicationMenu 1
nvram_set 2860 showgpsMenu 1
nvram_set 2860 showdtuMenu 1
nvram_set 2860 showgpioMenu 1
nvram_set 2860 showswitchgwMenu 1
nvram_set 2860 showvoiceMenu 1
nvram_set 2860 showmsgMenu 1
nvram_set 2860 showWirelessMenu 1
nvram_set 2860 showVPNMenu 1
命令解析:
正则表达式 \(.*\)\"\(.*\)\"\(.*\) 可以匹配到 "" 前后的所有字符并分组
\2 表示使用从第二个分组

s/^/nvram_set 2860 /g 表示在字符串的行首添加字符串“nvram_set 2860 ”
's/$/ 1/g' 表示在字符串的末尾添加" 1"
标签: shell sed
共有 人打赏支持
粉丝 0
博文 2
码字总数 1017
×
jickding
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: