sed 匹配以 * 和 // 开头的行

发布于 2024-10-29 18:51:44 字数 780 浏览 3 评论 0原文

我想转换一些 java 文件并将元音变音 Ö、ä 和 ü 替换为 unicode。

这是我的 sed 行:

sed -i '{ /^(#|\*$)/!s/0xE4/0xE4/g;/#/!s/Ä/0xC4/g;/#/!s/ö/0xF6/g;/#/!s/Ö/0xD6/g;/#/!s/ü/0xFC/g;/#/!s/Ü/0xDC/g; }' 

场景:

在 sed 之前,它看起来像:

# comment with umlauts ÄÄÄÄÄÄÖÖÖÖÖ

ÖÖÖÖÖÖÖÖÖ

// comment with umlauts ÄÄÄÄÄÄÖÖÖÖÖ

 Text text text ÄÄÄÄÄÖÖÖÖÖ

/*
 * comment with umlauts ÄÄÄÄÄÄÖÖÖÖÖ
 */

在它应该看起来像这样:

 # comment with umlauts ÄÄÄÄÄÄÖÖÖÖÖ

 0xD60xD60xD60xD60xD60xD60xD60xD60xD60xD60xD60xD6

// comment with umlauts ÄÄÄÄÄÄÖÖÖÖÖ

 Text text text 0xC40xC40xC40xC40xC40xD60xD60xD60xD60xD6


/*
 * comment with umlauts ÄÄÄÄÄÄÖÖÖÖÖ
 */

任何人都可以帮助我进行匹配吗? - 我已经知道了,但它不能正常工作:

/^(#|\*$)/!

I wanna convert some java files and replace the umlauts Ö,ä and ü as unicode.

Here's my sed line:

sed -i '{ /^(#|\*$)/!s/0xE4/0xE4/g;/#/!s/Ä/0xC4/g;/#/!s/ö/0xF6/g;/#/!s/Ö/0xD6/g;/#/!s/ü/0xFC/g;/#/!s/Ü/0xDC/g; }' 

scenario:

Before sed it looks like :

# comment with umlauts ÄÄÄÄÄÄÖÖÖÖÖ

ÖÖÖÖÖÖÖÖÖ

// comment with umlauts ÄÄÄÄÄÄÖÖÖÖÖ

 Text text text ÄÄÄÄÄÖÖÖÖÖ

/*
 * comment with umlauts ÄÄÄÄÄÄÖÖÖÖÖ
 */

After it should looks like that :

 # comment with umlauts ÄÄÄÄÄÄÖÖÖÖÖ

 0xD60xD60xD60xD60xD60xD60xD60xD60xD60xD60xD60xD6

// comment with umlauts ÄÄÄÄÄÄÖÖÖÖÖ

 Text text text 0xC40xC40xC40xC40xC40xD60xD60xD60xD60xD6


/*
 * comment with umlauts ÄÄÄÄÄÄÖÖÖÖÖ
 */

Could anyone help me with the matching? - I"ve got but it doesn't works right:

/^(#|\*$)/!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

爱要勇敢去追 2024-11-05 18:51:44

Posix sed

sed '\%^ *\(#\|//\|\*\|/\*\)%!{
 s/Ä/0xC4/g
 s/ö/0xF6/g
 s/Ö/0xD6/g
 s/ü/0xFC/g
 s/Ü/0xDC/g
}'

GNU sed

sed -r '\%^ *(#|//|\*|/\*)%!{
 s/Ä/0xC4/g
 s/ö/0xF6/g
 s/Ö/0xD6/g
 s/ü/0xFC/g
 s/Ü/0xDC/g
}'

已更新为 ninjalj 的评论。真正的忍者编辑!

Posix sed

sed '\%^ *\(#\|//\|\*\|/\*\)%!{
 s/Ä/0xC4/g
 s/ö/0xF6/g
 s/Ö/0xD6/g
 s/ü/0xFC/g
 s/Ü/0xDC/g
}'

GNU sed

sed -r '\%^ *(#|//|\*|/\*)%!{
 s/Ä/0xC4/g
 s/ö/0xF6/g
 s/Ö/0xD6/g
 s/ü/0xFC/g
 s/Ü/0xDC/g
}'

Updated with ninjalj's comments. An actual ninja edit!

秋心╮凉 2024-11-05 18:51:44

sed 使用基本的正则表达式,因此您必须将 ( 写为 \( 并将 | 写为 \ |。

sed uses basic regular expressions, so you have to write ( as \( and | as \|.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文