Вы пытались отключить автозапуск во время загрузки? Это, казалось, работало для кого-то в ссылке, которую вы дали.
Учитывая любое возможное имя файла из этого каталога:
printf '%s\0' cpu-*-201* | \
awk -F'-' 'BEGIN{RS="\0"} $3~/^201/ {a[$1"-"$2]} END{for(i in a) print i}'
printf '%s\0' cpu-*-201* печатает имена файлов, разделенные с помощью NUL awk, устанавливает разделитель записи как NUL и помещает - разделенные первые два поля (с - между ними) в качестве ключа ассоциативного массива a, если третье поле начинается с 201. В конце мы просто печатаем ключи массива с помощью {a[$1"-"$2]} END{for(i in a) print i} . Если вы хотите, вы можете избавиться от массива и использовать sort после печати первых двух полей, разделенных символом -:
printf '%s\0' cpu-*-201* | \
awk -F'-' 'BEGIN{RS="\0"} $3~/^201/ {print $1"-"$2}' | sort -u
Предполагая, что нет необычного имени файла, существует множество опций, все из которых помогают sort -u получить уникальность:
printf '%s\0' cpu-*-201* печатает имена файлов, разделенные NULprintf '%s\0' cpu-*-201*, печатает имена файлов, разделенные с помощью NUL
printf '%s\n' cpu-*-201* | sed -E 's/^(.*)-201.*/\1/' | sort -u
awk, устанавливает разделитель записи как NUL и помещает - в раздел первые два поля (с - между ними) в качестве ключа ассоциативного массива a, если третье поле начинается с 201. В конце мы просто печатаем ключи массива с помощью {a[$1"-"$2]} END{for(i in a) print i} awk устанавливает разделитель записи как NUL и помещает - разделенные первые два поля (с - между ) в качестве ключа ассоциативного массива a, если третье поле начинается с 201. В конце мы просто печатаем ключи массива с помощью {a[$1"-"$2]} END{for(i in a) print i}
printf '%s\n' cpu-*-201* | cut -d- -f1,2 | sort -u
sed:
% printf '%s\n' cpu-*-201*
cpu-interrupt-2016-05-07
cpu-interrupt-2017-05-08
cpu-softirq-2017-05-06
cpu-softirq-2017-05-07
cpu-softirq-2017-05-08
cpu-system-2016-05-06
cpu-system-2017-05-08
cpu-wait-2016-05-06
cpu-wait-2017-05-07
cpu-wait-2017-05-08
% printf '%s\0' cpu-*-201* | awk -F'-' 'BEGIN{RS="\0"} $3~/^201/ {a[$1"-"$2]} END{for(i in a) print i}'
cpu-softirq
cpu-interrupt
cpu-wait
cpu-system
% printf '%s\0' cpu-*-201* | awk -F'-' 'BEGIN{RS="\0"} $3~/^201/ {print $1"-"$2}' | sort -u
cpu-interrupt
cpu-softirq
cpu-system
cpu-wait
% printf '%s\n' cpu-*-201* | grep -Po '^.*(?=-201)' | sort -u
cpu-interrupt
cpu-softirq
cpu-system
cpu-wait
% printf '%s\n' cpu-*-201* | sed -E 's/^(.*)-201.*/\1/' | sort -u
cpu-interrupt
cpu-softirq
cpu-system
cpu-wait
% printf '%s\n' cpu-*-201* | awk -F'-' '$3~/^201/ {a[$1"-"$2]} END{for(i in a) print i}'
cpu-interrupt
cpu-softirq
cpu-system
cpu-wait
% printf '%s\n' cpu-*-201* | awk -F'-' '$3~/^201/ {print $1"-"$2}' | sort -u
cpu-interrupt
cpu-softirq
cpu-system
cpu-wait
% printf '%s\n' cpu-*-201* | cut -d- -f1,2 | sort -u
cpu-interrupt
cpu-softirq
cpu-system
cpu-wait
Мы можем использовать Perl для извлечения требуемой части перед подстрокой -201 и хранить элементы в хэше, где каждая извлеченная строка будет ключевым значением.
$ perl -ne '($var=$_)=~s/^(.*)-201(.*)/\1/g;$hash{$var}+=1; END{ do{print }for keys %hash}' input.txt
cpu-system
cpu-softirq
cpu-wait
cpu-interrupt
Как только обработка будет завершена, в результате в качестве ключей будут оставлены только уникальные значения, хотя обратите внимание, что они не будут в определенном порядке сортировки (так что если вы хотите отсортировать вывод, к команде sort)
Я не скажу, что это «оптимальное решение», но учитывая
$ ls cpu*
cpu-interrupt-2016-05-07 cpu-softirq-2017-05-06 cpu-softirq-2017-05-08 cpu-system-2017-05-08 cpu-wait-2017-05-07
cpu-interrupt-2017-05-08 cpu-softirq-2017-05-07 cpu-system-2016-05-06 cpu-wait-2016-05-06 cpu-wait-2017-05-08
, тогда
$ ls cpu* | cut -d- -f1,2 | uniq
cpu-interrupt
cpu-softirq
cpu-system
cpu-wait
Учитывая любое возможное имя файла из этого каталога:
printf '%s\0' cpu-*-201* | \
awk -F'-' 'BEGIN{RS="\0"} $3~/^201/ {a[$1"-"$2]} END{for(i in a) print i}'
printf '%s\0' cpu-*-201* печатает имена файлов, разделенные с помощью NUL awk, устанавливает разделитель записи как NUL и помещает - разделенные первые два поля (с - между ними) в качестве ключа ассоциативного массива a, если третье поле начинается с 201. В конце мы просто печатаем ключи массива с помощью {a[$1"-"$2]} END{for(i in a) print i} . Если вы хотите, вы можете избавиться от массива и использовать sort после печати первых двух полей, разделенных символом -:
printf '%s\0' cpu-*-201* | \
awk -F'-' 'BEGIN{RS="\0"} $3~/^201/ {print $1"-"$2}' | sort -u
Предполагая, что нет необычного имени файла, существует множество опций, все из которых помогают sort -u получить уникальность:
printf '%s\0' cpu-*-201* печатает имена файлов, разделенные NULprintf '%s\0' cpu-*-201*, печатает имена файлов, разделенные с помощью NUL
printf '%s\n' cpu-*-201* | sed -E 's/^(.*)-201.*/\1/' | sort -u
awk, устанавливает разделитель записи как NUL и помещает - в раздел первые два поля (с - между ними) в качестве ключа ассоциативного массива a, если третье поле начинается с 201. В конце мы просто печатаем ключи массива с помощью {a[$1"-"$2]} END{for(i in a) print i} awk устанавливает разделитель записи как NUL и помещает - разделенные первые два поля (с - между ) в качестве ключа ассоциативного массива a, если третье поле начинается с 201. В конце мы просто печатаем ключи массива с помощью {a[$1"-"$2]} END{for(i in a) print i}
printf '%s\n' cpu-*-201* | cut -d- -f1,2 | sort -u
sed:
% printf '%s\n' cpu-*-201*
cpu-interrupt-2016-05-07
cpu-interrupt-2017-05-08
cpu-softirq-2017-05-06
cpu-softirq-2017-05-07
cpu-softirq-2017-05-08
cpu-system-2016-05-06
cpu-system-2017-05-08
cpu-wait-2016-05-06
cpu-wait-2017-05-07
cpu-wait-2017-05-08
% printf '%s\0' cpu-*-201* | awk -F'-' 'BEGIN{RS="\0"} $3~/^201/ {a[$1"-"$2]} END{for(i in a) print i}'
cpu-softirq
cpu-interrupt
cpu-wait
cpu-system
% printf '%s\0' cpu-*-201* | awk -F'-' 'BEGIN{RS="\0"} $3~/^201/ {print $1"-"$2}' | sort -u
cpu-interrupt
cpu-softirq
cpu-system
cpu-wait
% printf '%s\n' cpu-*-201* | grep -Po '^.*(?=-201)' | sort -u
cpu-interrupt
cpu-softirq
cpu-system
cpu-wait
% printf '%s\n' cpu-*-201* | sed -E 's/^(.*)-201.*/\1/' | sort -u
cpu-interrupt
cpu-softirq
cpu-system
cpu-wait
% printf '%s\n' cpu-*-201* | awk -F'-' '$3~/^201/ {a[$1"-"$2]} END{for(i in a) print i}'
cpu-interrupt
cpu-softirq
cpu-system
cpu-wait
% printf '%s\n' cpu-*-201* | awk -F'-' '$3~/^201/ {print $1"-"$2}' | sort -u
cpu-interrupt
cpu-softirq
cpu-system
cpu-wait
% printf '%s\n' cpu-*-201* | cut -d- -f1,2 | sort -u
cpu-interrupt
cpu-softirq
cpu-system
cpu-wait
Мы можем использовать Perl для извлечения требуемой части перед подстрокой -201 и хранить элементы в хэше, где каждая извлеченная строка будет ключевым значением.
$ perl -ne '($var=$_)=~s/^(.*)-201(.*)/\1/g;$hash{$var}+=1; END{ do{print }for keys %hash}' input.txt
cpu-system
cpu-softirq
cpu-wait
cpu-interrupt
Как только обработка будет завершена, в результате в качестве ключей будут оставлены только уникальные значения, хотя обратите внимание, что они не будут в определенном порядке сортировки (так что если вы хотите отсортировать вывод, к команде sort)
Я не скажу, что это «оптимальное решение», но учитывая
$ ls cpu*
cpu-interrupt-2016-05-07 cpu-softirq-2017-05-06 cpu-softirq-2017-05-08 cpu-system-2017-05-08 cpu-wait-2017-05-07
cpu-interrupt-2017-05-08 cpu-softirq-2017-05-07 cpu-system-2016-05-06 cpu-wait-2016-05-06 cpu-wait-2017-05-08
, тогда
$ ls cpu* | cut -d- -f1,2 | uniq
cpu-interrupt
cpu-softirq
cpu-system
cpu-wait