我在使用本网站上提供的答案时遇到了一些问题,该问题是关于 sed 命令用另外两行内容替换空行的,如果 Mac OS 上的 sed 命令(对我来说是 10.6.7) ) 是不同的。我不认为是这样,但想知道这个网站上的其他人是否有不同的想法。
我想用来将sed斜杠更改为反斜杠和斜杠,即/-> \/。但它不起作用。这里有一个小例子:
#!/bin/bash
TEST=/etc/hallo
echo $TEST
echo $TEST | sed "s/hallo/bello/g"
echo $TEST | sed "s/\//\\\//g"
Run Code Online (Sandbox Code Playgroud)
前三行的输出是假设的。但是最后一个不起作用。为什么?如何修正最后一部分?
我sed 's~ ~~g'在 Linux 系统上的 shell 脚本中找到了一行。这是什么~?
我在 bash 脚本中有一组 sed 替换,并且收到有关未终止的“s”命令的错误。这是 sed 行的样子:
sed -n -e "s/TMPFOO1/$FOO1/" -e "s/TMPFOO2/$FOO2/" -e "s/TMPFOO3/$FOO3/" -e "s/TMPFOO4/$FOO4/" -e "s/TMPFOO5/$FOO5/" /home/foo/template > /home/foo/template/finishedresult
Run Code Online (Sandbox Code Playgroud)
但出于某种原因,bash 不喜欢这样,我收到了一个关于
sed: -e expression #4, char 69: unterminated `s' command
Run Code Online (Sandbox Code Playgroud)
我在这里缺少什么?我怎样才能让 SED 输入变量?在我看来他们都被终止了。
我正在创建一个函数,以安全的方式使用正则表达式替换字符串,不可能注入字符,也不会放弃使用正则表达式:
#! /bin/sh
stringer()
{
pattern="${1}"
replace="${2}"
printf '%s\n' "examp/e w\\th sed: " | sed "s/${pattern}/${replace}/g"
}
stringer "\\/" "l"
Run Code Online (Sandbox Code Playgroud)
到目前为止一切顺利,但如果我使用:
stringer "/" "l"
Run Code Online (Sandbox Code Playgroud)
它会导致一个 sed 错误,关于这个我知道输入参数可以被转义,但是它不能与正则表达式一起使用,我希望能够将它与正则表达式一起使用,有或没有任何建议sed 但没有符合 posix 方式的扩展?
我知道以前有人问过这个问题,但我无法理解我找到的答案。基本上我想用
sed -i 's/ string / /some/directory /g' file.txt
我找不到关于如何使语法/some/directory不分解的直接答案sed。
这工作正常:
sed -i 's# @driver.find_element(:xpath, "//a\[contains(@href,##' temp_spec.rb
Run Code Online (Sandbox Code Playgroud)
反对一个来源
@driver.find_element(:xpath, "//a[contains(@href,'change_district')]").click
Run Code Online (Sandbox Code Playgroud)
我只剩下:
'change_district')]").click`
Run Code Online (Sandbox Code Playgroud)
但是当我尝试在最后添加单引号时,它失败了:
sed -i 's# @driver.find_element(:xpath, "//a\[contains(@href,\'##' temp_spec.rb
syntax error near unexpected token `('
Run Code Online (Sandbox Code Playgroud)
我正在使用\'转义单引号。
请注意,我使用 a#作为分隔符而不是普通/分隔符,因为/文本中有's。
我使用以下代码来删除一行:
sed -i "0,/$DELETE_THIS/{/$DELETE_THIS/d;}" file.txt
Run Code Online (Sandbox Code Playgroud)
但如果变量DELETE_THIS包含特殊字符,例如.、等/,则此代码将失败...*
有没有办法告诉sed忽略所有特殊字符并将它们用作基本文本?
例如。txt文件只是[
sed -i 's/[/linux/' txtfile(这给出了一个错误不平衡括号([]))上运行的命令后,我想替换[到linux
我\\在前面尝试过,但我认为它不正确并且搜索了一段时间找不到任何有用的东西。谢谢
我正在尝试删除tech\file.php 中包含许多这样的行的所有字符串"tech\/what-is-vnet"。为什么这个命令什么也不做?
sed -i "s~tech\~~g" file.php
Run Code Online (Sandbox Code Playgroud) 我有下一个包含内容的文件test.txt:
- name: MONGODB_HOST
value: {{MONGODB-HOST}}
Run Code Online (Sandbox Code Playgroud)
我想用这个环境变量替换{{MONGODB-HOST}}:
MONGODB_HOST=server.dev.example,server2.dev.example
Run Code Online (Sandbox Code Playgroud)
命令是:
/bin/sed -i 's,{{MONGODB-HOST}},'"$(MONGODB_HOST)"',' "test.txt";
Run Code Online (Sandbox Code Playgroud)
它失败了:
/bin/sed: -e expression #1, char 56: unknown option to `s'
Run Code Online (Sandbox Code Playgroud)
如果我离开:
MONGODB_HOST=server.dev.example
Run Code Online (Sandbox Code Playgroud)
有用。你能帮我找出它失败的原因吗?