【问题标题】:sed removes part of the string when doing search/replacesed 在进行搜索/替换时删除部分字符串
【发布时间】:2017-09-12 13:47:13
【问题描述】:

我的本​​地文件包含方括号和正则括号等特殊字符。

当试图用 SED 替换文件名的一部分时,文件名是

原始文件名如下:

  • ddatum - ffirma - bbetreff (wwer) [tags_][Beleg]_007246-1 copy.pdf

进行 sed 替换时,我得到如下结果:

  • 20161219 - ffirma - bbetreff (wwer) copy.pdf

另一个例子:

  • 原文:ddatum - ffirma - bbetreff (wwer) [tags_][Beleg]_007858.pdf
  • 结果:20161231 - ffirma - bbetreff (wwer)

我使用的sed命令是:

 newName=`sed -e 's/ddatum/'\$firstDate'/g' <<< "\$f"`

$firstDate 包含简单的日期字符串。 $f 包含原始文件名。

我想它必须做文字字符。到目前为止,我的搜索还没有提供任何有用的东西。感谢您的支持。

【问题讨论】:

  • 发布您的实际代码,而不是对其的二手描述。
  • 整个 $f 字符串可能无法进入 sed,因此这可能是一个公平的 bash 问题。最好有一个简单的脚本来解决这个问题。
  • 同意其他人的观点,$f 可能不是你想的那样。你也可以试试:newName=sed -e "s/ddatum/${firstDate}/g" &lt;&lt;&lt; "${f}"

标签: bash sed


【解决方案1】:

这样就可以了:

newName=`sed -e "s/ddatum/$firstDate/g" <<< "$f"`

示例:

$ f="ddatum - ffirma - bbetreff (wwer) [tags_][Beleg]_007246-1 copy.pdf"
$ firstDate="20161231"
$ newName=`sed -e "s/ddatum/$firstDate/g" <<< "$f"`
$ echo $newName 
20161231 - ffirma - bbetreff (wwer) [tags_][Beleg]_007246-1 copy.pdf

【讨论】:

    猜你喜欢
    • 2021-06-21
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    • 1970-01-01
    • 1970-01-01
    • 2015-05-02
    • 2015-05-08
    • 1970-01-01
    相关资源
    最近更新 更多