我很难用 sed 替换 XML 文件中的文本字符串,尽管我使用 grep 查找相同的字符串没有问题。由于要替换的新字符串和旧字符串包含很多特殊字符,我认为最好将它们存储在变量中,而不是使用大量反斜杠:
OLD_STRING='<property name="webServiceHost">${jboss.bind.address}</property>'
NEW_STRING='<!--<property name="webServiceHost">${jboss.bind.address}</property>-->'
Run Code Online (Sandbox Code Playgroud)
字符串似乎按预期存储:
$ echo $OLD_STRING; echo $NEW_STRING
<property name="webServiceHost">${jboss.bind.address}</property>
<!--<property name="webServiceHost">${jboss.bind.address}</property>-->
Run Code Online (Sandbox Code Playgroud)
Grep'ing 确认旧字符串存在于 XML 文件中:
$ grep "$OLD_STRING" jboss-beans.xml
<property name="webServiceHost">${jboss.bind.address}</property>
Run Code Online (Sandbox Code Playgroud)
但是以下 sed 命令不会产生任何输出:
sed -i 's/"$OLD_STRING"/"$NEW_STRING"/g' jboss-beans.xml
Run Code Online (Sandbox Code Playgroud)
知道我在这里缺少什么吗?
如何在 FTP 服务器上的多个文件中搜索和替换文本?
基本上我需要在一堆普通的旧 HTML 页面上更改 Google Analytics 信息,我想知道是否有办法做到这一点,而不必下载所有文件,在本地进行搜索和替换,然后通过 FTP 将它们返回.
如何在 Opera 中对 textarea 的上下文进行搜索和替换?我有一个带有 html 表单的网页,我需要在此表单中输入和编辑大文本。
简单的例子:
添加一些大文本,例如
这是长文本的示例。这是长文本的示例。这是长文本的示例。
现在我的任务是:将“This”的所有子字符串更改为“That”;将“long long”的所有字符串更改为“very long”。如果我使用 notepad.exe 或任何文本编辑器,我可以按“Ctrl-G”或从菜单中调用“搜索和替换”对话框。这将显示带有“搜索”和“替换为”字段的对话框窗口。我可以在这个窗口中输入我的任务,然后编辑器将在文本中进行复制。
我要编辑的输入表单不属于我的站点(我无法更改 html;但我可以安装 UserJS)。我想留在浏览器中,因为此站点允许我执行一些经常使用的操作(例如此站点上的“{}”或“图像”按钮)。但是如果任务是在很多地方做替换,手工就很难做到。
我要编辑的输入表单有一些不错的编辑功能,但没有搜索和替换功能。
我的浏览器只能对文本区域内的文本执行“搜索”功能。
如何使用单个搜索/替换来替换所有单词town并village保留这句话中第一个字母的大小写:
Towns are small cities. I live in a town.
Run Code Online (Sandbox Code Playgroud)

我正在尝试用新页面或CTRL+enter键盘快捷键替换“-----------” 。
我将“CTRL+ENTER”粘贴到 Microsoft Word 2007 中的“替换为:”字段中,希望当我单击“全部替换”时,我会在新页面上显示破折号...
它没有用。
有些东西告诉我有一种更简单(工作)的方法。 是什么?我需要做什么?
想象一下我有一个这样的文件:
INSERT INTO table VALUES('1','<p><em>The lazy fox jumps again</em></p>bunch of other html<p><em>Is the lazy fox crazy?</em></p>')
INSERT INTO table VALUES('2','<p><em>The lazy fox jumps again</em></p>bunch of other html<p><em>Is the lazy fox crazy?</em></p>')
INSERT INTO table VALUES('3','<p><em>The lazy fox jumps again</em></p>bunch of other html<p><em>Is the lazy fox crazy?</em></p>')
Run Code Online (Sandbox Code Playgroud)
我想删除只有第一次出现的<p><em>和</em></p>,所以我最终的东西是这样的:
INSERT INTO table VALUES('1','The lazy fox jumps againbunch of other html<p><em>Is the lazy fox crazy?</em></p>')
INSERT INTO table VALUES('2','The lazy fox jumps againbunch of other html<p><em>Is the lazy fox …Run Code Online (Sandbox Code Playgroud) Emacs 有一个名为Evil的 Vim 模拟器模式。此模式具有搜索替换功能,其作用与突出显示区域并在其上运行 sed 基本相同。这个函数的绝妙之处在于,它在您执行命令之前实时显示您所做更改的预览,这对于构建使用正则表达式的搜索替换命令非常有用。
我很虚弱,不想重新训练我的肌肉记忆来使用 Vim 键。有没有办法在普通 Emacs 中使用预览获得这种类似 sed 的搜索和替换功能?
我将创建一个 .sh 以使用其他文件的内容替换文件中的特定关键字。
sed 可用于替换关键字:
value="hello superuser"
sed -e "s/__PLACEHOLDER__/${value}/g" template.html > page.html
Run Code Online (Sandbox Code Playgroud)
所以我尝试了以下方法:
value=$(<contents.html)
sed -e "s/__PLACEHOLDER__/${value}/g" template.html > page.html
Run Code Online (Sandbox Code Playgroud)
并收到以下错误消息:替代模式内未转义的换行符
请问这种情况怎么处理?
谢谢!
(这是我之前提出的一个问题的衍生内容。)
我正在尝试为 LibreOffice Writer 设计一个正则表达式,以查找我的博士论文中的所有缩写。目前我有以下内容:
\b(?:[A-Z]){2,}
Run Code Online (Sandbox Code Playgroud)
这几乎完成了这项工作,因为它识别出所有以多个大写字母开头的单词。但是,我有一些缩写它没有捕获,即:
CoE RoR RoC
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想要一个 RegEx 来标识所有至少包含两个大写字母的单词,尽管它们不必位于单词的开头。但我在尝试创建它时不知所措。有人能指出我正确的方向吗?
我正在尝试使用正则表达式匹配以以下标记开头和结尾的行:
<Description>
</Description>
Run Code Online (Sandbox Code Playgroud)
标签之间可以有多行文本,我如何匹配这个值?描述标签示例:
<Description>
test1
test2
test3
test4
</Description>
Run Code Online (Sandbox Code Playgroud)
我尝试了多种正则表达式变体,但都不起作用,这是我尝试过的最新变体:
<Description>(\n.*)</Description>
Run Code Online (Sandbox Code Playgroud)
编辑:我在使用正则表达式时使用 Visual Studio 17s 查找/替换组件。此外,还有多个描述标签实例。