使用sed替换文本,并在其中添加单引号

Prvt_Yadav

我回答了这个问题,但是我陷入了必须在其中添加单引号的部分。

像原始文件是:

$$BATCHCTRL=TEST-012017
$$STATE=CA AZ
$$FROM_DATE=01/10/2017
$$TO_DATE=01/30/2017

新文件应为:

$$BATCHCTRL=TEST-012017
$$STATE='CA'
$$FROM_DATE=01/10/2017
$$TO_DATE=01/30/2017

我用了

sed -Ei 's/^\$\$STATE=([A-Z]{2}) ([A-Z]{2})/\$\$STATE=\1/g' sed_file

所以我得到了:

$$BATCHCTRL=TEST-012017
$$STATE=CA
$$FROM_DATE=01/10/2017
$$TO_DATE=01/30/2017

但现在我无法在其中添加单引号。我尝试转义,使用双引号而不是单引号,尝试不使用引号,但没有一个起作用。

库萨兰达

两种选择:

暂时中断作为sed表达式的单引号字符串,插入"'"(带引号的单引号字符)并继续。重复其他报价。

$ sed -E 's/^\$\$STATE=([A-Z]{2}) ([A-Z]{2})/$$STATE='"'"'\1'"'"'/' file
$$BATCHCTRL=TEST-012017
$$STATE='CA'
$$FROM_DATE=01/10/2017
$$TO_DATE=01/30/2017

请注意,$不必在替换字符串中进行转义。

您也可以\'代替"'"

$ sed -E 's/^\$\$STATE=([A-Z]{2}) ([A-Z]{2})/$$STATE='\''\1'\''/' file
$$BATCHCTRL=TEST-012017
$$STATE='CA'
$$FROM_DATE=01/10/2017
$$TO_DATE=01/30/2017

或者,

在表达式中使用双引号,并在其中使用单引号作为普通字符。这就要求所有现有的反斜杠和$字符都必须受外壳保护。

$ sed -E "s/^\\\$\\\$STATE=([A-Z]{2}) ([A-Z]{2})/\$\$STATE='\1'/" file
$$BATCHCTRL=TEST-012017
$$STATE='CA'
$$FROM_DATE=01/10/2017
$$TO_DATE=01/30/2017

这里需要过多的转义,因为您想在正则表达式中(以及仅在替换部分中)sed获取原义字符串在外壳程序的双引号中,只是一个文字将是一个文字反斜杠,后跟,并且外壳程序将尝试使用后面的内容作为扩展名(例如)。使用,我们在原义的反斜杠后面加上原义的\$$\$$\\$$$$$$STATE\\\$$

我还删除gsed表达式末尾的由于您将其锚定在行的开头,因此我们不希望替换执行一次以上。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

sed替换文本并放在行尾

来自分类Dev

SED替换引号内的文本

来自分类Dev

在其中包含单引号和双引号的android中使用sqlite插入字符串

来自分类Dev

使用sed in终端替换文件中的文本

来自分类Dev

使用sed或awk用单引号替换反引号

来自分类Dev

如何使用sed替换文本中的空行

来自分类Dev

用sed替换文本

来自分类Dev

如何正确使用替换文本中sed捕获的组?

来自分类Dev

使用Powershell替换文本

来自分类Dev

sed两次添加替换文本

来自分类Dev

sed和regex规则替换文本

来自分类Dev

sed命令用'字符替换文本

来自分类Dev

使用sed替换包含引号和单引号的文本

来自分类Dev

shell bash,cat文件,同时使用sed替换文本

来自分类Dev

使用sed in终端替换文件中的文本

来自分类Dev

使用sed或awk用单引号替换反引号

来自分类Dev

奇怪的循环并在其中添加函数

来自分类Dev

用SED替换文件中的文本

来自分类Dev

使用jQuery查找<em>标签并在其中添加内容

来自分类Dev

Bash-命令替换添加单引号

来自分类Dev

sed:替换文本保持数字出现

来自分类Dev

sed无法正确替换文本

来自分类Dev

sed无法使用变量替换文件中的文本

来自分类Dev

使用sed替换两个字符之间的单引号

来自分类Dev

将JSON转换为Python Dictionaries会将双引号替换为单引号,并在每个双引号打开实例之前添加一个“ u”

来自分类Dev

搜索模式中的$时,在替换文本中使用sed'

来自分类Dev

使用sed命令替换包含某些单词的行中单引号内的值

来自分类Dev

从双引号替换为单引号时从终端sed

来自分类Dev

用sed递归替换文本