我有几百万行,看起来像这样。我正在寻找一种用“TABLENAME”替换这些行的方法。 “TABLENAME”每次都会有所不同。 “TABLENAME”总是在这一行。基本上我正在寻找将此路径转换为“TABLENAME”。我的想法是寻找第五次出现的“”,并用sed替换它的整个行。 sed有这个能力吗?先谢谢你。Sed一行并将其替换为行中的内容
我行
path : /BLAH/BLAH1[(@name="BLAH2")]/BLAH/BLAH[(@BLAH="SERVER")]/BLAH[(@name="CHECK")]/sampler[(@name="SAMPLE")][(@type="")]/table[(@name="TABLENAME")]/rows/row[(@name="AROW")]/cell[(@column="ACELL")]
我想要的结果(轮到我行正下方的线)(我不能用sed替换路径表名,因为有时它可能是一个不同的表名,我不知道哪一个可能是)
TABLENAME
本来我可以用
sed -r "s/.*table\[\(@name=\"([A-Z]+).*/\1/" myfile
做到这一点为s由另一个stackoverflower使用,但它看起来不起作用,因为路径之前有额外的8个空格。如果我删除了8个空格,这个代码就可以工作,但是由于我用java调用这个空间的方式,这些空间总是会在那里。有没有解决这个命令的工作?
前面的空格不应该是你的问题,因为它们会被模式中的第一个*所贪婪地匹配。所以这个正则表达式应该按照预期工作。 – toddlermenot 2014-10-09 18:26:20
表名可以包含小写字母,数字,下划线,任何其他特殊字符?你的正则表达式只是假设大写字母;也许'[^“] +'会更好地为您服务 – 2014-10-09 18:57:08