文档章节

Linux shell sed 从原始文本中提取“” 中的字符串

jickding
 jickding
发布于 2016/11/25 11:02
字数 292
阅读 112
收藏 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"

© 著作权归作者所有

共有 人打赏支持
jickding
粉丝 0
博文 2
码字总数 1017
作品 0
成都
程序员
私信 提问
linux下grep、awk和sed工具用法概览

linux下grep、awk和sed工具用法概览 在linux下,grep、awk和sed是非常强大的文本处理工具,其中grep命令主要用作文本搜索,而awk和sed命令侧重于文本的编辑等操作,另外awk本身还可以是编程语...

小陶小陶
09/11
0
0
linux sed 命令单行任务快速参考

文本间隔: ——– # 在每一行后面增加一空行 sed G # 将原来的所有空行删除并在每一行后面增加一空行。 # 这样在输出的文本中每一行后面将有且只有一空行。 sed ‘/^$/d;G’ # 在每一行后面...

程序师
07/30
0
0
shell脚本抽取文本文件中指定字符串的方法:sed+grep方法、awk+grep方法(必要时可以联合sed以及grep)、grep+cut方法

在linux中经常要对一些动态的文本文件抽取指定的字符串,比如执行ps命令后想要获取指定的运行进程(如ps自己)的PID号(同一个进程每次启动的时候pid号是随机分配的)。该怎么办呢?当然,可以...

WXXGoodJob
11/08
0
0
linux shell 用sed命令在文本的行尾或行首添加字符

用sed命令在行首或行尾添加字符的命令有以下几种: 假设处理的文本为test.file 在每行的头添加字符,比如"HEAD",命令如下: sed 's/^/HEAD/g' test.file 在每行的行尾添加字符,比如“TAIL”...

大圈
2015/07/23
0
0
使用sed在文件中定位文本的方式

sed是实现对流的编辑。通常,我们使用sed可以实现内容的编辑后然后保存成另外的一个文件,如果正确的话,才写入到源文件。但是某些时候,我们需要直接修改文件,因为,保存文件到一个文件,然...

AlphaJay
2012/03/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

新手也能看懂,消息队列其实很简单

该文已加入开源项目:JavaGuide(一份涵盖大部分Java程序员所需要掌握的核心知识的文档类项目,Star 数接近 16k)。地址:https://github.com/Snailclimb/JavaGuide. 本文内容思维导图: 消息...

阿里云官方博客
10分钟前
0
0
如何在Chrome浏览器中启动deviceready事件(尝试调试phonegap项目)?

我正在开发PhoneGap应用程序,我希望能够在Chrome中调试它,而不是在电话上调试。但是,我在onGetReady()函数中初始化我的代码,该函数在PhoneGap触发“deviceready”事件时触发。由于Chr...

kisshua
今天
9
0
nginx中部署vue打包后的静态文件

如何在nginx中部署静态资源就不描述了, 请看我的这篇博客 将vue脚手架项目打包后的静态文件放到nginx上, 发现有个问题, 即url上有#, 怎么去掉这个#呢. 1 项目中router的mode 路由的mode要为h...

克虏伯
今天
13
0
JS容易理解错误的地方

在这端代码执行的末尾,你会不会hi变量回事函数中的hi了?你会不会认为这不是按引用传递了? 对值传递和引用传递产生质疑了? 1 var hi = {};2 function sayHello(hi) { ...

器石_
今天
9
0
Java开发学习--MongoDB

之前只学过sql,第一次使用非关系型数据库。以前对于关系型数据库与非关系型数据库的概念很模糊,通过这次的学习对这两者有了一个清晰的概念。 主键 在MongoDB中,主键名叫"_id",如果在生成...

微笑向暖wx
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部