Копирование некоторых частей файла

В то время как Digikam нуждается в базе данных, он поставляется в комплекте с showPhoto (у меня есть версия 4.0.0beta3 прямо сейчас, не знаю, было ли showPhoto доступно в более ранних версиях). showPhoto - автономный просмотрщик изображений без базы данных. Он отображает практически те же метаданные, что и у Digikam. Это хороший вариант для тех, кому нужны оба: управление отдельными активами и быстрый просмотрщик с функциями редактирования ...

Лично я тоже могу порекомендовать Gwenview. Отображение метаданных может быть полностью настроено и отображать все типы данных.

1
задан 17 June 2015 в 14:48

1 ответ

EDIT:

Создайте файл, вызовите его, как вам нравится, и скопируйте скрипт awk в него. chmod +x scriptname.awk, чтобы сделать его исполняемым.

#!/usr/bin/awk -f

BEGIN {var_num=0} 
/VARIABLES/,/}/ {
    sub("{","");
    sub("}","");
    sub("VARIABLES",""); 
    if ($0~/[[:alpha:]],/||/[[:alpha:]]/)var_num+=1
    }

 /DESCRIPTION/{ 
    getline; printf "%s,",$0
    } 
/::=/ {
    printf $2","
    }
END{ printf var_num }

Теперь вот мой пример запуска скрипта:

$ IFS=","; ARRAY=($(./three-lines.awk test-text.txt  | xargs echo ))                               
$ echo ${ARRAY[0]}; echo ${ARRAY[1]}; echo ${ARRAY[2]}                                             
SNMP Agent is up. 
101
5

Effectivelly, это создает массив из трех элементов, и эти элементы - это то, что извлекает скрипт awk из файла , Regex [[: alpha:]] используется для рассмотрения алфавитных сценариев и алфавитных строк с комами в качестве переменных, поэтому var_num получает приращение; если нет строк, соответствующих этому шаблону, var_num не увеличивается EDIT

Вот мой однострочный awk:

awk 'BEGIN {var_num=0} /VARIABLES/,/}/ {sub("{","");sub("}","");sub("VARIABLES",""); var_num+=1} END{ print var_num}' test-text.txt

Основная идея: создать переменную var_num, сообщить awk, чтобы читать все строки, содержащие строку VARIABLES и фигурные скобки}. Избавьтесь от этой строки, всех фигурных скобок, и у нас есть только строки, представляющие переменные. Добавьте 1 для каждой строки в var_num. В конце - напечатайте общее количество подсчитанных переменных.

Причина удаления VARIABLES и фигурных скобок заключается в том, что мы не хотим подсчитывать строки, содержащие только строку VARIABLE или фигурные скобки. Итак, нам нужно убедиться, что они ушли.

Еще один шаблон, который я заметил, состоит в том, что каждая переменная разделяется на группы. Таким образом, вы можете использовать оператор if, что-то вроде if ($0~/,/) { var_num+=1 }

2
ответ дан 23 May 2018 в 19:49
  • 1
    См. этот комментарий (и обновленный вопрос); Сначала я понял то же самое, но вопрос резко изменился (и теперь это более жестко) – kos 15 June 2015 в 12:38
  • 2
    @SamFlynn Я думаю, проблема связана с " " HostAd " , там есть дополнительная двойная цитата – Sergiy Kolodyazhnyy 15 June 2015 в 13:43
  • 3
    @SamFlynn не понимает, о чем вы говорите с TRAPS, но. , , , продолжайте рок-н-ролл, да? : D Среднее время, я немного отредактирую свой ответ. Фиксирование маленькой ошибки – Sergiy Kolodyazhnyy 15 June 2015 в 13:56
  • 4
    Как только я вернусь домой, я отредактирую свой ответ. До сих пор я уезжаю из города. Я просмотрел примеры. Насколько я понимаю, вы ставите переменные на одной строке. Это правильно ? – Sergiy Kolodyazhnyy 17 June 2015 в 15:18
  • 5
    @SamFlynn Хорошо, я буду работать над этим. Позвольте вам знать, как только я закончу – Sergiy Kolodyazhnyy 22 June 2015 в 17:20

Другие вопросы по тегам:

Похожие вопросы: