【发布时间】:2015-09-28 19:48:11
【问题描述】:
我有一个有效的 sed 命令可以替换 matched 块中的一些坐标,如下所示: sed 命令看起来像这样并且在 bash 中工作:
sed '/^matched.*$/ {
n;n;n;s/img{[0-9]*,[0-9]*}/img{0,10}/;n;s/img{[0-9]*,[0-9]*}/img{20,30}/;n;s/img{[0-9]*,[0-9]*}/img{40,0}/
}
' file.txt
它搜索匹配并在 next 行中执行一些 s替换
问题在于,与 bash 相反,如果我键入第一行代码并在 tcsh 中按 Enter。代码立即执行并返回缺少的 '.
如果我使用 tcsh 执行相同的命令并删除所有换行符,那么我会得到 sed: command garbled: (在 ubuntu 上使用 bash sed 4.2.2 版,它甚至可以在没有换行符的情况下工作)
我知道问题与包含 sed 代码块的花括号 { } 前后的新行有关。但我不知道如何在那里输入它们。
另外,我不知道如何将这些换行符放在 shell 脚本中,以便在它们的单独行上放置大括号。
file.txt:
unmatched
{
"img{170,68}"
"img{817,252}"
"img{664,1096}"
"img{12,943}"
}
matched
{
"img{0,0}"
"img{0,111}"
"img{222,333}"
"img{444,0}"
}
【问题讨论】: