我有一个xml文件,如:
<http:website/CODE1> <http:website/CODE2> <http:website/CODE3>
其中:
CODE1是由2个字母2个数字和2个字母定义的代码:AA11BB
CODE2是一个词:东方或西方
CODE3是浮点数
我需要提取此代码,过滤掉xml代码。我需要使用sed。 我认为(仅提取第一个CODE):
sed 's/[A-Z]\{2\}[0-9]\{2\}[A-Z]\{2\}!//g
为了用空的空格替换与第一个RegEx不匹配的所有内容。 RegEx是对的,但如果我使用&#34;否定&#34;符号比它不起作用?怎么了? 此外,如何将多个替换应用于同一行?
答案 0 :(得分:0)
这是一个提示 - 因为你似乎想自己解决它:)
sed 's/AAA\(.*\)BBB\(.*\)CCC/\1--\2 /'
会寻找像
这样的东西AAAsomethingBBBanotherCCC
并将其更改为
something--another
\(\)
用于选择部件,\1
和\2
用于检索部件
答案 1 :(得分:0)
sed -n "
/east/ s/.*\([A-Z][A-Z][0-9][0-9][A-Z][A-Z]\)>.*\(east\).*\/\([0-9.,]\{1,\}\)>.*/\1 \2 \3/p
/west/ s/.*\([A-Z][A-Z][0-9][0-9][A-Z][A-Z]\)>.*\(west\).*\/\([0-9.,]\{1,\}\)>.*/\1 \2 \3/p
" YourFile
假设每行只有1个三元组(如果没有,结果可能是行上的值和输出的1个三元组的混合)
还包括使用的浮点数。 ou,作为分隔符(取决于环境)
答案 2 :(得分:0)
如果您的输入文字与您的示例匹配,则一行上的3个标记(以空格分隔)与最终/
和每个结尾>
之间的目标文字一起使用:
sed 's/<[^>]*\/\([^>]*\)>/\1/g' filename