我需要使用sed命令来搜索文本文件并替换$Date$为: 日期文本$Date: 2021-01-06... $
在哪里...。
我有一个sed命令可以搜索Date并将其替换为 Date: 2021-01-06...:
sed "s/Date/Date $(date)/"
Run Code Online (Sandbox Code Playgroud)
但我无法得到一个sed命令来替换$Date$.
此外,我能够得到一个sed命令来替换$Date usingsed "s/\$Date/\$Date $(date)/" 但我无法弄清楚搜索和替换的语法$Date$。
我试过:
sed "s/\$Date\$/\$Date $(date) \$/"
Run Code Online (Sandbox Code Playgroud)
但它不起作用。
Kam*_*ski 13
我试过:
sed "s/\$Date\$/\$Date $(date) \$/"但它不起作用。
因为\$在双引号中只告诉外壳不要解释 (expand) $,但是有sed. 它获取s/$Date$/$Date … $/(其中…表示$(date)扩展到的内容)并将第二个解释$为与行尾匹配的锚点。Ins/regexp/replacement/ $仅在 结尾处被解释为锚点regexp。所以你也需要逃避这个特殊的$for sed,即你需要sed从字面上得到\$. 这可以通过以下方式完成:
sed "s/\$Date\\$/\$Date $(date) \$/"
Run Code Online (Sandbox Code Playgroud)
或者
sed "s/\$Date\\\$/\$Date $(date) \$/"
Run Code Online (Sandbox Code Playgroud)
它适用于两个或三个反斜杠,因为$之前的双引号/不需要(但可能)被转义,并且\需要\\双引号。这有点复杂,因此考虑单引号所有不需要双引号的片段:
sed 's/$Date\$/$Date '"$(date)"' $/'
Run Code Online (Sandbox Code Playgroud)
这里所有$应该到达的字符sed都是单引号的;唯一\应该得到sed的也是单引号。