相关疑难解决方法(0)

Mac OSX 上的 sed 和其他“标准”sed 之间的区别?

我在使用本网站上提供的答案时遇到了一些问题,该问题是关于 sed 命令用另外两行内容替换空行的,如果 Mac OS 上的 sed 命令(对我来说是 10.6.7) ) 是不同的。我不认为是这样,但想知道这个网站上的其他人是否有不同的想法。

osx sed standard

79
推荐指数
3
解决办法
8万
查看次数

sed 中的斜线和反斜线

我想用来将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)

前三行的输出是假设的。但是最后一个不起作用。为什么?如何修正最后一部分?

bash sed quoting

51
推荐指数
2
解决办法
18万
查看次数

命令“sed 's~ ~~g'”中的“~”的目的是什么?

sed 's~ ~~g'在 Linux 系统上的 shell 脚本中找到了一行。这是什么~

sed

30
推荐指数
2
解决办法
8031
查看次数

为什么 sed 给我一个关于未终止的“s”的错误?

我在 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 输入变量?在我看来他们都被终止了。

sed shell-script text-processing

9
推荐指数
2
解决办法
3万
查看次数

一个符合 posix 的函数,用于用参数和正则表达式替换文本

我正在创建一个函数,以安全的方式使用正则表达式替换字符串,不可能注入字符,也不会放弃使用正则表达式:

#! /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 方式的扩展?

shell-script posix regular-expression replace

6
推荐指数
1
解决办法
1664
查看次数

使用 sed 将字符串替换为包含目录名称的字符串(即斜杠“/”)

我知道以前有人问过这个问题,但我无法理解我找到的答案。基本上我想用

sed -i 's/ string / /some/directory /g' file.txt

我找不到关于如何使语法/some/directory不分解的直接答案sed

sed text-processing

5
推荐指数
2
解决办法
191
查看次数

如何转义单引号?

这工作正常:

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。

shell scripting sed quoting escape-characters

4
推荐指数
1
解决办法
2万
查看次数

要求 sed 忽略所有特殊字符

我使用以下代码来删除一行:

sed -i "0,/$DELETE_THIS/{/$DELETE_THIS/d;}" file.txt
Run Code Online (Sandbox Code Playgroud)

但如果变量DELETE_THIS包含特殊字符,例如.、等/,则此代码将失败...*

有没有办法告诉sed忽略所有特殊字符并将它们用作基本文本?

sed regular-expression

4
推荐指数
1
解决办法
9822
查看次数

sed 如何逃跑 [

例如。txt文件只是[

sed -i 's/[/linux/' txtfile(这给出了一个错误不平衡括号([]))上运行的命令后,我想替换[linux

\\在前面尝试过,但我认为它不正确并且搜索了一段时间找不到任何有用的东西。谢谢

sed

1
推荐指数
1
解决办法
282
查看次数

sed 无法用 \ 字符替换字符串

我正在尝试删除tech\file.php 中包含许多这样的行的所有字符串"tech\/what-is-vnet"。为什么这个命令什么也不做?

sed -i "s~tech\~~g" file.php
Run Code Online (Sandbox Code Playgroud)

sed

1
推荐指数
1
解决办法
196
查看次数

/bin/sed: -e 表达式 #1, char 56: `s' 的未知选项

我有下一个包含内容的文件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)

有用。你能帮我找出它失败的原因吗?

linux sed

0
推荐指数
1
解决办法
548
查看次数