sed 批量修改文件中遇到的单引号和双引号的坑

1.功能需求:

代码上线时候可能会遇到需要修改程序的一些文件的配置信息,如果通过脚本实现,我想到了sed将这些需要修改的配置位置的行号用grep -n + awk 过滤到一个数组里面,然后通过for+case/esac(即c语言的switch case)遍历sed 替换即可

2. 代码截图

3。遇到两个坑

1.sed -ir “行号s/匹配内容/替换内容/g”中的每一部分中如果有引用变量记得使用单引号,否则可能无法解析变量

2 。 其实用双引号也可以放到最外层。不过通常不这么做

3  有变量的位置应该使用单引号或者双引号 ,慢慢琢磨吧

4。处理单双引号的原则:

1 尽量按照标准格式使用单引号,替换内容部分有单引号 应该这样使用 ‘"‘替换内容‘"‘

2  要保留单引号,就用两个单引号包裹一个单引号

3  要保留双引号,就用两个双引号包裹一个单引号

时间: 2024-08-04 05:09:24

sed 批量修改文件中遇到的单引号和双引号的坑的相关文章

php中的单引号、双引号和转义字符

PHP单引号及双引号均可以修饰字符串类型的数据,如果修饰的字符串中含有变量(例$name):最大的区别是: 双引号会替换变量的值,而单引号会把它当做字符串输出. 例如: <?php          $name="string";         echo  " 字符串" . '$name';         echo   "字符串" .  "$name";  ?> 结果:          字符串$name   

linux shell中的单引号与双引号的区别(看完就不会有引号的疑问了)(转)

" "(双引号)与 ' '(单引号)的区别  你在shell prompt后面敲打键盘.直到按下enter的时候,你输入的文字就是command line了,然后shell才会以进程方式执行你所提交的命令.但是,你又可知道:你在command line输入的每一个文字,对shell来说,有什么类别之分呢? 简单而言,command line的每一个charactor分为如下两种:   *literal:也就是普通纯文字,对shell来说没有特殊功能.   *meta:对shell来说,

php中超全局数组变量$_GET和$_POST以及单引号和双引号的区别

1,$_GET的传参是在地址栏明文显示的,$_POST是通过http主体请求,页面上看不到(通过firebug可以查看): 2,http并没有明确规定$_GET和$_POST所能提交的数据的限制,$_GET受浏览器和web服务器的相关设置,$_POST也受web服务器以及php.ini中的相关设置而定,$_GET一般提交数据的大小不超过2k: 3.从设定上来说$_GET一般用于获取或查询数据而进行传参,$_POST一般用于更新,插入,删除数据而进行传参,用$_POST提交数据相对于$_GET安全

php中的单引号与双引号详解

一.引号定义字符串 在Php中,通常一个字符串被定义在一对引号中,如: 'I am a string in single quotes'"I am a string in double quotes" Php语法分析器是用成对的引号来判断一个字符串的.因此,所有字符串必须使用同一种单或者双引号来定义开始和结束.例如,下面的字串定义是不合法的: "I am not a valid string since I have unmatching quote marks''Me ne

mysql 进行update时,要更新的字段中有单引号或者双引号导致不能批量生成sql的问题

前言 将数据从一张表迁移到另外一张表的过程中,通过mysql的concat方法批量生成sql时遇到了一个问题,即进行UPDATE更新操作时如果原表中的字段中包含单引号'或者双引号",那么就会生成不正确的update语句. 原因当然很简单因为update table set xxx = 'content'时content一般由英文单引号'或者双引号"包裹起来,使用单引号较多. 如果content中包含单引号'时我们需要对单引号'进行转义或者将content用双引号括起来,这样双引号&qu

linux bash shell中,单引号、 双引号,反引号(``)的区别及各种括号的区别

一.单引号和双引号 首先,单引号和双引号,都是为了解决中间有空格的问题. 因为空格在Linux中时作为一个很典型的分隔符,比如string1=this is astring,这样执行就会报错.为了避免这个问题,因此就产生了单引号和双引号.他们的区别在于,单引号将剥夺其中的所有字符的特殊含义,而双引号中的'$'(参数替换)和'`'(命令替换)是例外.所以,两者基本上没有什么区别,除非在内容中遇到了参数替换符$和命令替换符`. 所以下面的结果:num=3echo '$num'$numecho "$n

C语言中的单引号和双引号含义

C语言中的单引号和双引号含义迥异, 用单引号引起的一个字符实际上代表一个整数,整数值对应于该字符在编译器采用的字符集中的序列值,因此,采用ASCII字符集的编译器而言,'a'的含义与0141或97严格一致. 而用双引号引起的字符串,代表的却是一个指向无名数组起始字符的指针,该数组被双引号之间的字符以及一个额外的二进制值为零的字符'\0'初始化.

js、html中的单引号、双引号及其转义使用

js.html中的单引号.双引号及其转义使用在js中对相关字符做判断或取值的时候很多情况下都会用到这些. ------ 在一个网页中的按钮,写onclick事件的处理代码,不小心写成如下:<input value="Test" type="button" onclick="alert(""OK"");" />IE提示出错后,再漫不经心地改为:<input value="Test&

java中的单引号和双引号

1.单引号引的数据 是char类型的,双引号引的数据 是String类型的:单引号只能引一个字符,而双引号可以引0个及其以上.char只是一个基本类型,而String 可以是一个类,可以直接引用.比如char c='c';不能直接对c调用方法.String s="abc";  这时可以调用s.charAt(0);等方法,因为String是类,这是就是对象的调用了 2.在sql语句中单引号可以标识文本型的数据.都是界符,用来标识它们引用数据的开始和结束.另外java中的sql里传变量时使