2013-09-30 46 views
0

我想提取包含在string.xml值APP_NAME但我不知道該怎麼做:Android開項目名稱慶典

這裏是我有什麼

appName=`awk -F'"' '/android:label/{print $(NF-1); exit}' AndroidManifest.xml` 
echo "App name is "$appName 

此打印 @串/ APP_NAME

但我想是實際的字符串包含在那裏,我怎麼能這樣做,在bash腳本請: 像

​​

還是否有人awk的簡單和快速教程知道我會很感激

感謝

編輯:xml文件:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <string name="other">Other</string> 
    <string name="app_name">App Name</string> 
    <string name="other2">Other</string> 
</resources> 

THKS到所有已經在這裏找到答案是最終版本:

appName=`awk -F'["/]' '/android:label/{print $(NF-1); exit}' AndroidManifest.xml` 
echo "App name is "$appName 

appName2=`xpath -q -e "//*[@name='$appName']/text()" res/values/strings.xml` 
echo $appName2 
+1

使用xpath提取值。你能顯示輸入xmls嗎? – hek2mgl

+0

你能解釋一下怎麼樣機智嗎?也hav編輯我的問題,並添加XML文件 – vallllll

+0

是的,會舉一個例子 – hek2mgl

回答

2

您可以使用XPath:

xpath -q -e "//*[@name='app_name']/text()" AndroidManifest.xml 
+0

不是Ubuntu中的標準程序,必須安裝。爲什麼在簡單的'awk'獲得我們需要的時候使用它? – Jotne

0

此awk與不同的文件分隔符將工作:

awk -F'["/]' '/android:label/{print $(NF-1); exit}' AndroidManifest.xml 

OUTPUT:

app_name 
+0

謝謝,但我想得到什麼是內部「app_name」而不是應用程序名稱本身 – vallllll

+0

我已經提供了編輯中的示例xml,所以我想要打印的是應用程序名稱 – vallllll

0

示例使用XPath:

的test.xml:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <string name="other">Other</string> 
    <string name="app_name">App Name</string> 
    <string name="other2">Other</string> 
</resources> 

命令:

xmllint --xpath '//*[@name="app_name"]/text()' test.xml 

你需要安裝該

1

這裏xmllint包與awk溶液(不是很便攜式):

awk -F'[<>]' '/"app_name"/ {print $3}' 

你的榜樣,輸出App Name

簡短說明:它使用尖括號更改輸入字段分隔符,然後如果行匹配"app_name",則awk命令將採用第3個字段。