Команда awk для поиска в файлах, выглядящих по-разному - PullRequest
0 голосов
/ 12 сентября 2010

Почему это не работает? Он находит все остальные файлы, но не этот. Разница лишь в том, что в названии есть цифры.

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 ]

2 голосов
/ 12 сентября 2010
awk -F= '$1~/^ *Icon/ {print $2}' file
2 голосов
/ 12 сентября 2010

Поскольку вы используете равные, а не пробел, в качестве разделителя полей, $1 на самом деле " Icon" с начальным пробелом. Попробуйте

awk -F= '$1==" Icon" {print $2}'

в вашем файле, и вы увидите, что файл с номерами в имени действительно не имеет значения.

1 голос
/ 12 сентября 2010

Если некоторые из ваших файлов имеют начальные пробелы в каждой строке, а некоторые нет, это совпадение с регулярным выражением может помочь:

awk -F= '$1 ~ " *Icon" {print $2}'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...