0

我有一个 xml 文件,例如:

<http:website/CODE1> <http:website/CODE2> <http:website/CODE3>

在哪里:

CODE1是由2个字母2个数字2个字母定义的代码:AA11BB

CODE2是一个词:东或西

CODE3 是一个浮点数

我需要提取这些代码过滤掉 xml 代码。我需要使用 sed。我想像(仅提取第一个代码):

sed 's/[A-Z]\{2\}[0-9]\{2\}[A-Z]\{2\}!//g

为了用空格替换与第一个 RegEx 不匹配的所有内容。RegEx 是正确的,但如果我使用“否定”符号,它就不起作用了吗?怎么了?此外,如何将多个替换应用于同一行?

4

3 回答 3

0

这是一个提示 - 因为您似乎想自己解决它:)

sed 's/AAA\(.*\)BBB\(.*\)CCC/\1--\2 /'

会寻找类似的东西

AAAsomethingBBBanotherCCC

并将其更改为

something--another

the\(\)用于选择零件,and\1用于\2检索零件

于 2013-10-28T19:32:38.367 回答
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 ,作为分隔符(取决于环境)

于 2013-10-29T16:37:57.773 回答
0

如果您的输入文本与您的示例匹配,则一行上有 3 个标签,由空格分隔,目标文本位于每个标签/的结尾和结尾>之间,那么将起作用:

sed 's/<[^>]*\/\([^>]*\)>/\1/g' filename
于 2013-10-31T22:53:41.443 回答