【问题标题】:using sed to delete two characters when they appear together but not individual one使用 sed 删除两个字符,当它们一起出现但不是单独的一个
【发布时间】:2017-08-01 03:01:09
【问题描述】:

我想删除文件中的 ./,但我也得到了 .和 / 自己在我的文件中,那些需要保留。我只想删除 ./ 作为组合。这样做的正确 sed 代码是什么?

希望有人可以帮助我。我会很感激的。提前谢谢!

【问题讨论】:

  • 我们通常希望人们在这里寻求帮助,以证明他们为自己解决问题做出了真诚的努力。通常这包括展示至少一个可行的解决方案尝试。
  • 以及这些输入的一些示例输入和预期输出;-/

标签: linux bash sed


【解决方案1】:

由于您没有向我们显示 Input_file,所以我假设这可能是您的 Input_file,请尝试关注并告诉我这是否对您有帮助。

cat Input_file
test ./ test . test./test. /test1/
./test . /test . / test/ test2 test3./ test4 . /

以下是代码及其输出。

awk '{gsub(/\.\//,"");print}'  Input_file
test  test . testtest. /test1/
test . /test . / test/ test2 test3 test4 . /

编辑:现在也添加一个 sed 解决方案。

sed 's/\.\///g'  Input_file

【讨论】:

    【解决方案2】:

    在 sed 中,使用s 命令替换文本。

    一般形式是

    s / 模式 / 替换 / 标志

    • 我们的模式是\./(匹配文字.,后跟/)。
    • 我们的替换什么都不是(空字符串)
    • 我们的 flags 是 g(用于替换该行中的每个匹配项)。
    • 我们可以将分隔符更改为 , 以避免与我们要替换的 / 混淆。

    把它放到一个完整的sed程序中

    #/usr/bin/sed -f
    s,\./,,g
    

    或者,作为 Bash 单线

    sed -e 's,\./,,g'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-25
      • 2016-04-17
      • 2022-11-09
      • 2021-05-26
      相关资源
      最近更新 更多