2016-01-22 45 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

相關問題