相关疑难解决方法(0)

是否可以使用sed可靠地转义正则表达式元字符

我想知道是否有可能编写一个100%可靠的sed命令来转义输入字符串中的任何正则表达式元字符,以便它可以在后续的sed命令中使用.像这样:

#!/bin/bash
# Trying to replace one regex by another in an input file with sed

search="/abc\n\t[a-z]\+\([^ ]\)\{2,3\}\3"
replace="/xyz\n\t[0-9]\+\([^ ]\)\{2,3\}\3"

# Sanitize input
search=$(sed 'script to escape' <<< "$search")
replace=$(sed 'script to escape' <<< "$replace")

# Use it in a sed command
sed "s/$search/$replace/" input
Run Code Online (Sandbox Code Playgroud)

我知道有更好的工具可以使用固定字符串而不是模式,例如awk,perlpython.我想证明是否有可能sed.我会说让我们专注于基本的POSIX正则表达式,以获得更多乐趣!:)

我已经尝试了很多东西,但任何时候我都能找到一个打破了我的尝试的输入.我认为保持它是抽象的,因为script to escape不会导致任何人走错方向.

顺便说一下,讨论在这里提出来了.我认为这可能是收集解决方案的好地方,可能会破坏和/或详细说明.

regex sed

54
推荐指数
2
解决办法
1万
查看次数

sed中的正则表达式,用于一个语句中的多个替换

我想清理一些输入并用可接受的输入替换几个字符,例如丹麦语å"with with aa".

这是很容易使用若干语句进行,例如/æ/ae/,/å/aa/,/ø/oe/,但由于工具的限制,我希望能够做到这一点在一个单一的正则表达式.

我可以捕获所有相关的情况(/[(æ)(ø)(å)(Æ)(Ø)(Å)]/)但我更换不能按我的意愿工作(但可能完全按照预期):

 $ temp="RødgrØd med flæsk"

 $ echo $temp
 RødgrØd med flæsk

 $ echo $temp | sed 's/[(æ)(ø)(å)(Æ)(Ø)(Å)]/(ae)(oe)(aa)(Ae)(Oe)(Aa)/g'
 R(ae)(oe)(aa)(Ae)(Oe)(Aa)dgr(ae)(oe)(aa)(Ae)(Oe)(Aa)d med fl(ae)(oe)(aa)(Ae)(Oe)(Aa)sk
Run Code Online (Sandbox Code Playgroud)

(第一个回声线是为了表明它不是编码问题)

另外,工具问题是我还想在Sublime Text 2片段中使用相同的正则表达式.

有谁能辨别我的正则表达式语句有什么问题?

提前致谢.

regex sed regex-group sublimetext2

29
推荐指数
2
解决办法
3万
查看次数

在 raku 中连接 `s///`

我发现脚本成瘾者加入 raku 的一个巨大卖点就是拥有这样的结构

my $w = "Hello world";

$w
  ~~ s/Hello/Hola/
  ~~ s/world/mundo/
  ;

say $w; # » Hola world
Run Code Online (Sandbox Code Playgroud)

但是我似乎无法写出这样的东西。据我所知,用 的.subst方法做这件事Str太丑了,这种连锁 s///甚至tr///基本上也将成为sed用户等的入门药物。

我的问题是我是否遗漏了某些东西,如果在 raku 中以某种方式可能会出现与此类似的东西。我不是初学者,我无法弄清楚。

raku

22
推荐指数
2
解决办法
686
查看次数

标签 统计

regex ×2

sed ×2

raku ×1

regex-group ×1

sublimetext2 ×1