从命令行到命令行的sed命令

时间:2018-01-03 16:02:50

标签: bash sed

当我看到以/feed/结尾并以http://a.b.c

开头的内容时,我希望附加字符串echo "http://a.b.c/blabla/feed/" | sed -e 's#\(http://a.b.c/.*/feed/\)#\1index.xml#g'

使用我编写的命令行,并使用此

#!/bin/bash

sed -i 's#\("http://a.b.c/.*/feed/"\)#"\1index.xml"#g' $1

我不知道如何转换此代码,以便它在脚本中使用-i和文件作为参数。

我尝试了以下内容,但只有当搜索到的字符串单独在一行上时才有效,而我需要在其他文本之间转换字符串。什么是正确的代码?

sample_r2= function(n = 12, min_dist = 5, seed = 42)
{
  available_days = seq(365)

  res = sort(sample(available_days, n))
  y = diff(res)
  res = res[y >= min_dist]

  while (length(res) < n)
  {
    forbidden_days = sapply(res, function(x){ x + -(min_dist-1):(min_dist-1) } )
    available_days = setdiff(available_days, forbidden_days)

    days = sample(available_days, n - length(res))
    res = sort(c(res, days))

    y = diff(res)
    res = res[y >= min_dist]
  }

  return(res)
}

1 个答案:

答案 0 :(得分:1)

我认为

#!/bin/bash

sed -i 's#\(http://a.b.c/.*/feed/\)#\1index.xml#g' "$1"

应该有效。我只在命令中删除了错误的双引号,并在$1周围添加了缺少的双引号。

如果像http://aXbXc/这样的输入不应该触发替换,那么你也应该逃避这些点。