使用sed转义特殊字符

合资公司

我有一个脚本可以从字符串生成char数组:

#!/bin/bash
while [ -n "$1" ]
do
    echo -n "{" && echo -n "$1" | sed -r "s/((\\\\x[0-9a-fA-F]+)|(\\\\[0-7]{1,3})|(\\\\?.))/'\1',/g" && echo "0}"
    shift
done

它的工作原理很棒:

$ wchar 'test\n' 'test\\n' 'test\123' 'test\1234' 'test\x12345'
{'t','e','s','t','\n',0}
{'t','e','s','t','\\','n',0}
{'t','e','s','t','\123',0}
{'t','e','s','t','\123','4',0}
{'t','e','s','t','\x12345',0}

但是由于sed认为每条新行都是崭新的事物,因此它无法处理实际的新行:

$ wchar 'test
> test'
{'t','e','s','t',
't','e','s','t',0}

如何将特殊字符(制表符,换行符等)替换为转义版本,以使输出如下所示:

$ wchar 'test
> test'
{'t','e','s','t','\n','t','e','s','t',0}

编辑:几乎可行的一些想法:

echo -n "{" && echo -n "$1" | sed -r ":a;N;;s/\\n/\\\\n/;$!ba;s/((\\\\x[0-9a-fA-F]+)|(\\\\[0-7]{1,3})|(\\\\?.))/'\1',/g" && echo "0}"

产生:

$ wchar 'test\n\\n\1234\x1234abg
test
test'
{test\n\\n\1234\x1234abg\ntest\ntest0}

在删除时!

echo -n "{" && echo -n "$1" | sed -r ":a;N;;s/\\n/\\\\n/;$ba;s/((\\\\x[0-9a-fA-F]+)|(\\\\[0-7]{1,3})|(\\\\?.))/'\1',/g" && echo "0}"

产生:

$ wchar 'test\n\\n\1234\x1234abg
test
test'
{'t','e','s','t','\n','\\','n','\123','4','\x1234ab','g','\n','t','e','s','t',
test0}

这很近...

第一个没有执行最终替换,第二个没有正确添加最后一行

格伦·杰克曼

您可以在传递到之前进行预过滤sedPerl将执行以下操作:

$ set -- 'test1
> test2'
$ echo -n "$1" | perl -0777 -pe 's/\n/\\n/g'
test1\ntest2

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Sed:正确转义特殊字符

来自分类Dev

使用sed转义特殊字符不起作用

来自分类Dev

在Java中转义特殊字符以调用sed

来自分类Dev

在 sed 中转义 xpath 的特殊字符

来自分类Dev

使用 java 转义特殊字符

来自分类Dev

使用 SED 流编辑器时如何转义字符串中的特殊字符

来自分类Dev

使用sed删除转义字符

来自分类Dev

如何使用ngSanitize正确转义特殊字符?

来自分类Dev

使用mysqldump的特殊字符转义密码变量

来自分类Dev

使用Spring的SOAP服务。转义特殊字符

来自分类Dev

如何使用ngSanitize正确转义特殊字符?

来自分类Dev

使用 JSP 或 JQuery 转义 HTML 特殊字符

来自分类Dev

使用sed删除特殊字符

来自分类Dev

如何在sed的“子命令”中转义特殊字符?

来自分类Dev

Ruta转义特殊字符

来自分类Dev

PHP特殊字符转义

来自分类Dev

Watir:转义特殊字符

来自分类Dev

从html转义特殊字符

来自分类Dev

特殊字符必须转义:[>]

来自分类Dev

在变量中的sed中使用特殊字符

来自分类Dev

使用sed替换多个特殊字符

来自分类Dev

使用带有特殊字符的sed

来自分类Dev

使用 sed 在特殊字符之间添加值

来自分类Dev

替换特殊字符 [ 和 ] 包括 . 使用 sed

来自分类Dev

使用 sed 命令替换特殊字符“/”

来自分类Dev

如何使用python转义xml属性中的特殊字符

来自分类Dev

如何使用NEST QueryString并转义特殊字符?

来自分类Dev

使用Lucene.NET在通配符搜索中转义特殊字符

来自分类Dev

在Python 2.7.3 / Raspberry Pi中使用特殊字符转义HTML