如果我有这样的sed脚本:
35185222p
并按以下方式运行:
sed -n -f seddy.sed infile.xml
它正确地打印出我想修复的XML的狡猾线。
如果我将脚本更改为:
35185222s@^.*$@<load address='11b38c56' size='08' />@p
它没有匹配(即没有输出)。我有什么问题?
好的:我想我现在得到了这个 - 遗憾的是原始文件中此行中的损坏意味着字符与.
不匹配 - 所以我该如何解决?
进一步更新这是我剪切和粘贴时的样子:
<load address='11c1�����ze='08' />
答案 0 :(得分:1)
尝试使用sed c
命令更改行的内容:
35185222c\<load address='11b38c56' size='08' />
我坦率地不知道为什么正则表达式^.*$
在该行上不匹配。我的猜测是它与你的语言环境和字符编码有关,但似乎它必须是一个错误。
答案 1 :(得分:1)
真正的问题似乎是语言环境的冲突。
运行
LANG=c sed -f seddy.sed input.xml
解决了这个问题。当然,我本可以使用c
命令。
答案 2 :(得分:0)
35185222s@[^].*[$]@<load address='11b38c56' size='08' />@p
^和$应该被转义,或者至少在[]之间,有意义(^ = begin,$ = end),并且在开始之前和结束之后都没有。
也可以使用',这取决于您的sed中的字符串分隔符,并且mybe也必须被escpaed