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

Jan*_*Jan 29 regex sed regex-group sublimetext2

我想清理一些输入并用可接受的输入替换几个字符,例如丹麦语å"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片段中使用相同的正则表达式.

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

提前致谢.

And*_*son 54

将其拆分为多个sed语句,分隔为;:

sed 's/æ/ae/g;s/ø/oe/g;s/å/aa/g;s/Æ/Ae/g;s/Ø/Oe/g;s/Å/Aa/g'
Run Code Online (Sandbox Code Playgroud)

  • @Jan,谢谢。我不认为你可以编写一个正则表达式来用几个替换之一替换几个可能的匹配之一,特别是不能用`sed`。 (2认同)

Don*_*sto 9

sed -e 's/Find/Replace/g;s/Find/Replace/g;[....];/Find/Replace/g'
Run Code Online (Sandbox Code Playgroud)

你会做的伎俩.

所以,转化为你需要的东西

sed -e 's/æ/ae/g;s/ø/oe/g;s/å/aa/g;s/Æ/Ae/g;s/Ø/Oe/g;s/Å/Aa/g'
Run Code Online (Sandbox Code Playgroud)