Sed:删除所有以" \ u"开头的单词直到第一个空白

时间:2014-03-18 01:10:20

标签: bash unix sed

我想删除以" \ u"开头的所有字符串直到第一个空格或标点符号

INPUT
Baby gift sets avalible from \u00a37.
to \u20ac 500 persons able to meet the conditions.
\u20ac 50 million.

OUTPUT
Baby gift sets avalible from.
to 500 persons able to meet the conditions.
50 million.

我试过了:     sed 's/"\u"[a-z][0-9]//g' input

但是我似乎无法匹配直到空白..任何帮助都将不胜感激!

5 个答案:

答案 0 :(得分:0)

使用POSIX [[:punct:]]和空格。

sed -e 's@\\u[^ [:punct:]]*@@g'

答案 1 :(得分:0)

以下似乎有效:

sed 's/[  ]\\u[0-9a-f]\+\([^  0-9a-f]\)/\1/g; s/\\u[0-9a-f]\+[  ]\?//g'

[ ](和类似)是一个空格和一个匹配空格的选项卡。第一个替换命令是from \u00a37. - > from.特殊情况。第二个是最常见的替代品。

答案 2 :(得分:0)

我只是使用bash parameter expansion/search and replace

$ string="Baby gift sets avalible from \u00a37. to \u20ac 500 persons able to meet the conditions. \u20ac 50 million."
$ echo "${string// \\+([a-z0-9])/}"
Baby gift sets avalible from. to 500 persons able to meet the conditions. 50 million.

答案 3 :(得分:0)

您可以搜索和替换多个表达式,例如:

sed -e 's/\\u[^ ]* //g' -re 's/ \\u[^ ]*([[:punct:]])/\1/' file

<强>测试

$ sed -e 's/\\u[^ ]* //g' -re 's/ \\u[^ ]*([[:punct:]])/\1/g' file
Baby gift sets avalible from.
to 500 persons able to meet the conditions.
50 million.

答案 4 :(得分:0)

这是awk

awk '{gsub(/\\u[^ .]* /,x);gsub(/ \\u[^.]*/,"")}1' file
Baby gift sets avalible from.
to 500 persons able to meet the conditions.
50 million.