我想转换一些java文件并将umlautsÖ,ä和ü替换为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 ÄÄÄÄÄÄÖÖÖÖÖ
*/
有人可以帮我配对吗? - 我有,但它不能正常工作:
/^(#|\*$)/!
答案 0 :(得分:2)
sed '\%^ *\(#\|//\|\*\|/\*\)%!{
s/Ä/0xC4/g
s/ö/0xF6/g
s/Ö/0xD6/g
s/ü/0xFC/g
s/Ü/0xDC/g
}'
sed -r '\%^ *(#|//|\*|/\*)%!{
s/Ä/0xC4/g
s/ö/0xF6/g
s/Ö/0xD6/g
s/ü/0xFC/g
s/Ü/0xDC/g
}'
更新了ninjalj的评论。一个真正的忍者编辑!
答案 1 :(得分:0)
sed
使用基本的正则表达式,因此您必须将(
写为\(
,将|
写为\|
。