awk命令用于查找看起来不同的文件

时间:2010-09-11 23:36:03

标签: awk

为什么这不起作用?它找到所有其他文件,但不是这个。唯一的区别是它的名字中有数字。

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”或脚本无效。

3 个答案:

答案 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}'