为什么这不起作用?它找到所有其他文件,但不是这个。唯一的区别是它的名字中有数字。
awk -F= '$1=="Icon" {print $2}' "/usr/share/applications/hildon/dropn900.desktop"
它使用的文件..
[Desktop Entry] Version=1.0.0 Encoding=UTF-8 Name=DropN900 Comment=Python based DropBox client Exec=/opt/dropn900/dropn900.py Icon=dropn900 X-Icon-path=/usr/share/icons X-Window-Icon=dropn900 Type=Application X-Osso-Type=application/x-executable
它应该给我输出“dropn900”但不是。
如果我按照以下建议行事。
awk -F= '$1==" Icon" {print $2}' "/usr/share/applications/hildon/fapman.desktop"
[Desktop Entry] Encoding=UTF-8 Version=1.0 Type=Application Name=Faster Application Manager Exec=fapman.launch Icon=fapman X-Osso-Type=application/x-executable X-Osso-Service=org.maemo.faster_application_manager Categories=System;
这不会显示..
丹尼斯建议的那个给出了输出。
dropn900 /usr/share/icons dropn900
但我只需要“dropn900”或脚本无效。
答案 0 :(得分:2)
由于您使用的是等号而不是空格,因此$1
实际为" Icon"
,为前导空格。尝试
awk -F= '$1==" Icon" {print $2}'
在您的文件上,您会看到名称中包含数字的文件确实无关紧要。
答案 1 :(得分:2)
awk -F= '$1~/^ *Icon/ {print $2}' file
答案 2 :(得分:1)
如果你的某些文件在每一行都有前导空格而某些文件没有,那么这个正则表达式匹配可能会有所帮助:
awk -F= '$1 ~ " *Icon" {print $2}'