sed 匹配以 * 和 // 开头的行
我想转换一些 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Posix sed
GNU sed
已更新为 ninjalj 的评论。真正的忍者编辑!
Posix sed
GNU sed
Updated with ninjalj's comments. An actual ninja edit!
sed
使用基本的正则表达式,因此您必须将(
写为\(
并将|
写为\ |。
sed
uses basic regular expressions, so you have to write(
as\(
and|
as\|
.