我想删除以" \ 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
但是我似乎无法匹配直到空白..任何帮助都将不胜感激!
答案 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.