在我的bash脚本中,我有一个外部(从用户接收)字符串,我应该在sed模式中使用它.
REPLACE="<funny characters here>"
sed "s/KEYWORD/$REPLACE/g"
Run Code Online (Sandbox Code Playgroud)
如何逃避$REPLACE字符串,以便sed作为文字替代品安全地接受?
注意:这KEYWORD是一个没有匹配等的哑子串.它不是由用户提供的.
我有一个文本文件,其中有一个特定的行
sometext sometext sometext TEXT_TO_BE_REPLACED sometext sometext sometext
Run Code Online (Sandbox Code Playgroud)
我需要替换上面的整行
This line is removed by the admin.
Run Code Online (Sandbox Code Playgroud)
搜索关键字是 TEXT_TO_BE_REPLACED
我需要为此编写一个shell脚本.我怎样才能实现这个目的sed?
我已成功使用以下sed命令在Linux中搜索/替换文本:
sed -i 's/old_link/new_link/g' *
Run Code Online (Sandbox Code Playgroud)
但是,当我在Mac OS X上试用它时,我得到:
"命令c期望\后跟文本"
我以为我的Mac运行普通的BASH shell.这是怎么回事?
编辑:
根据@High Performance,这是由于Mac sed具有不同的(BSD)风格,因此我的问题是如何在BSD中复制此命令sed?
编辑:
以下是导致此问题的实际示例:
sed -i 's/hello/gbye/g' *
Run Code Online (Sandbox Code Playgroud) 我有一个以逗号分隔的id文件.我正在尝试用新行替换逗号.我试过了:
sed 's/,/\n/g' file
Run Code Online (Sandbox Code Playgroud)
但它不起作用.我错过了什么?
我试图找出是否可以在单个sed命令中编辑文件,而无需手动将已编辑的内容流式传输到新文件中,然后将新文件重命名为原始文件名.我尝试了这个-i选项,但我的Solaris系统说这-i是一个非法的选择.有不同的方式吗?
有没有办法告诉sed输出只捕获的组?例如,给定输入:
This is a sample 123 text and some 987 numbers
Run Code Online (Sandbox Code Playgroud)
和模式:
/([\d]+)/
Run Code Online (Sandbox Code Playgroud)
我可以通过反向引用格式化的方式获得123和987输出吗?
只是想知道它们之间的主要区别是什么?和每种语言的力量(最好使用它).
编辑:这不是"对战" 喜欢话题,只是信息.
出于某种原因,我似乎无法找到一个直截了当的答案,而且我现在有点紧张.在使用该sed命令匹配特定字符串的第一行之后,如何插入选择行文本.我有 ...
CLIENTSCRIPT="foo"
CLIENTFILE="bar"
Run Code Online (Sandbox Code Playgroud)
我想在行之后插入一行,CLIENTSCRIPT=导致......
CLIENTSCRIPT="foo"
CLIENTSCRIPT2="hello"
CLIENTFILE="bar"
Run Code Online (Sandbox Code Playgroud) 我运行此命令在我的站点的根目录中的所有文件中查找并替换所有出现的'apple'和'orange':
find ./ -exec sed -i 's/apple/orange/g' {} \;
Run Code Online (Sandbox Code Playgroud)
但它不会通过子目录.
这个命令有什么问题?
编辑:这是find ./命令的一些输出行:
./index.php
./header.php
./fpd
./fpd/font
./fpd/font/desktop.ini
./fpd/font/courier.php
./fpd/font/symbol.php
Run Code Online (Sandbox Code Playgroud)