awk命令在不同的文件中查找
为什么这不起作用?它会找到所有其他文件,但不会找到这个文件。唯一的区别是它的名字里有数字awk命令在不同的文件中查找,awk,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/dropn
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
[桌面输入]
编码=UTF-8
版本=1.0
类型=应用程序
Name=更快的应用程序管理器
Exec=fapman.launch
Icon=fapman
X-Osso-Type=应用程序/X-可执行文件
X-Osso-Service=org.maemo.faster\u应用程序\u管理器
类别=系统;
这不会显示
丹尼斯建议的那个给出了输出
dropn900
/usr/share/icons
dropn900
dropn900
/usr/共享/图标
dropn900
但是我只需要“dropn900”,否则脚本将不起作用。因为您使用的是等于而不是空格作为字段分隔符,
$1
实际上是带有前导空格的图标。试一试
awk -F= '$1==" Icon" {print $2}'
在您的文件上,您将看到名称中包含数字的文件实际上是不相关的。因为您使用的是等于而不是空格作为字段分隔符,$1
实际上是带有前导空格的“Icon”
。试一试
awk -F= '$1==" Icon" {print $2}'
在您的文件上,您将看到名称中包含数字的文件实际上是不相关的。如果您的一些文件在每行上都有前导空格,而有些文件没有,此正则表达式匹配可能会有帮助:
awk -F= '$1 ~ " *Icon" {print $2}'
如果某些文件的每行都有前导空格,而有些文件没有,则此正则表达式匹配可能会有帮助:
awk -F= '$1 ~ " *Icon" {print $2}'
隐马尔可夫模型。。但现在我的其他工作不做了。比如“fapman.desktop”。它有相同的行“Icon=fapman”。@AlMehdi,如果一个值有前导空格,而另一个没有,那么您不能使用==
将它们与同一字符串进行比较!不要把重点放在文件名上,在这个Q的非常错误的标题中突出显示,这是不相关的。使用重新匹配或其他方法来检查。ghostdog74解决方案有效,所以我正在使用它。而且是真的。。我要换个话题。嗯。。但现在我的其他工作不做了。比如“fapman.desktop”。它有相同的行“Icon=fapman”。@AlMehdi,如果一个值有前导空格,而另一个没有,那么您不能使用==
将它们与同一字符串进行比较!不要把重点放在文件名上,在这个Q的非常错误的标题中突出显示,这是不相关的。使用重新匹配或其他方法来检查。ghostdog74解决方案有效,所以我正在使用它。而且是真的。。我要换个话题了。谢谢丹尼斯!是的,这就是为什么。dropn900.desktop具有前导空格。。我能用一个awk解决这个问题吗?还是我需要两个awk?@AlMedhi:见下面我的答案。(使用带有用户名的@,否则他们可能永远看不到回复。)@dennis williamson:谢谢!将来会这样做。不知道;)谢谢你,丹尼斯!是的,这就是为什么。dropn900.desktop具有前导空格。。我能用一个awk解决这个问题吗?还是我需要两个awk?@AlMedhi:见下面我的答案。(使用带有用户名的@,否则他们可能永远看不到回复。)@dennis williamson:谢谢!将来会这样做。不知道;)@丹尼斯·威廉姆森:它在《终点站》中确实有效,但当我在剧本中这样做的时候。它没有找到全部。之前它只是错过了“dropn900”,但现在它错过了包括“dropn900”在内的五个。可能是因为它发现了很多。。它获取所有带有“图标”的行。编辑我的帖子。@dennis williamson:它在终端中确实有效,但当我在脚本中这样做时。它没有找到全部。之前它只是错过了“dropn900”,但现在它错过了包括“dropn900”在内的五个。可能是因为它发现了很多。。它获取所有带有“图标”的行。编辑我的帖子。@ghostdog74:谢谢,但它在“fapman”上不起作用,因为它没有前导空间。对不起。。忘记了“*”。。现在它可能会起作用。但我不确定它是否总是第一个正确的“图标”。“^”表示。奇怪。。现在“fapman”在终端中给出正确的输出。但是当我在脚本中运行它时不显示。只有“法普曼”在13岁时没出现我的错。。我回去仔细检查了一下。它找到了“法普曼”,这是它应该找到的。我发现这个图标在另一个文件夹中。这是一个为我工作的。@ghostdog74:谢谢,但它对“fapman”不起作用,因为它没有前导空间。对不起。。忘记了“*”。。现在它可能会起作用。但我不确定它是否总是第一个正确的“图标”。“^”表示。奇怪。。现在“fapman”在终端中给出正确的输出。但是当我在脚本中运行它时不显示。只有“法普曼”在13岁时没出现我的错。。我回去仔细检查了一下。它找到了“法普曼”,这是它应该找到的。我发现这个图标在另一个文件夹中。这就是为我工作的那个。
awk -F= '$1~/^ *Icon/ {print $2}' file