开发者

sed matching lines beginning with * and //

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开发者_JAVA百科 anyone help me with the matching? - I"ve got but it doesn't works right:

/^(#|\*$)/!


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!


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

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜