使用带有特殊字符的 SED 命令

使用带有特殊字符的 SED 命令

有没有办法使用sed命令 this 在行首搜索特殊字符,将其替换为另一个特殊字符,然后仅将特殊字符附加到该行?

我做了一些挖掘,浏览了一些论坛,并尝试了解sed.看起来我确实必须对特殊字符做点什么。我正在使用该sed命令附加以 a 开头的行[并添加 a,]但它不执行任何操作。我想我还缺少一些东西。另一个问题是它依赖于另一个sed* that replaces a// for a[`。

查找并替换:

sed -e 'y#//#[#'

这会返回一个错误:

sed: -e expression #1, char 7: strings for `y' command are different lengths

附录:

sed -e "/^'['/s/$/']/g"

我创建了该文件的副本,并使用文本编辑器进行了查找和替换,将 // 更改为 [ 但是此命令不会返回任何结果,并且不会将字符添加到末尾。

我认为我仍然缺少一些使这些命令正常工作的东西,并且不确定是否有办法可以将它们组合成一个命令。

答案1

据我所知,你想要什么,这个 sed 命令应该可以做到。它使用“s”命令,而不是“y”:

  • 第一个 sed 命令(直到分号)将 // 的任何实例替换为 [

  • 第二个 sed 命令查找以“[”开头的行并在末尾添加“]”

     echo -e "hello//goodbye\nhello[goodbye\n//hello_and_goodbye\n[hello_and_goodbye"|\
     sed 's~//~[~g;/^\[/s~$~]~'
    

相关内容