2016-01-22 76 views
-3
#!/bin/bash 
I = `grep -R --include="*.xml" "Non Frontal Face" /home/ashutosh/Desktop/imgdone | grep "Frontal Face" > temp.txt` 
cut -d':' -f1 temp.txt > out.txt 
cat out.txt 

我想要的是只有显示所有具有“正面”的xmls,而不是结果中的所有文件以及“非正面”字符串存在的任何位置,我会得到“正面脸部“以粗体突出显示。如果该字符串是另一个字符串的子字符串,则使用grep在xml文件中查找特定的字符串?

请帮我一把! ?

+3

表达错误,你说'var = $(command)'。 '='周围的空间不正确,使得Bash将'var = $(command)'解释为'使用参数'='和'$(command)'执行命令'var'。 – fedorqui

+1

向我们展示您的输入样本XML和期望的输出 –

+0

非正面Face_Heart是任何给定xml的属性,我希望任何具有“Frontal Face”的xml都应该被检测到,在那种情况下,我应该怎么做呢? –

回答

0

也许这可以帮助

grep -Rl "Frontal Face" *.xml |grep -v "Non Frontal Face" > out.txt 

-l告诉grep来打印文件的唯一名称。

+0

它仍然在做同样的事情,即使术语是“非正面脸”,由于正面脸是非...的子字符串,术语“正面脸”也变得突出显示。面部 –

+1

这是说高亮部分是部分你的问题(即它没有严格限制选择正确的线,但也突出显示正确的子集)?我会建议对此更加明确。 –

+0

伙计,当我查询“Frontal Face”时 - (i)(因为我有兴趣获得这个单词来的xml只有这个字符串),但是我得到了xmls的“Non Frontal Face” - (ii)被写为(i)是(ii)的子串。我希望只有那些只有(i)而不是(ii)的xmls应该作为输出。我应该使用什么工具? –

2

如果我理解正确,您想从“正面面部”匹配中删除“非正面面部”?

grep -R --include="*.xml" "Frontal Face" /home/ashutosh/Desktop/imgdone | 
grep -v "Non Frontal Face" 

如果你只想要文件nmes,管道到cut -d : -f 1。不需要临时文件,并且用语法错误替换奇数命令是完全多余的。

(如果固定与各地等于空白签,I最终将包含一个空字符串,因为你反正重定向所有的输出到文件的语法错误。你没有使用I任何东西,无论如何,所以它是双重或三重多余的。)

+0

谢谢你,它的工作原理:-) –

+0

你能不能请告诉如何搜索具有多个属性的xmls。除此之外,假设我必须搜索更多的关键字,我如何将它集成在同一段代码中! ? –

+0

在一般情况下,您需要类似XPath的东西来正确操作XML。对于结构化格式使用面向行的工具通常是一个坏主意,尽管它可以在有限的情况下完成。 – tripleee

相关问题