“Никакой такой файл или каталог” сообщение на самом деле не относится к загрузчику для 32-разрядных исполняемых файлов, который необходим для выполнения 32-разрядного исполняемого файла. Для более подробного объяснения см. " не показанное" сообщение при выполнении 32-разрядного двоичного файла в 64-разрядной системе. Необходимо установить 32-разрядную поддержку на Дуге Linux.
К сожалению, Дуга Linux не имеет простого способа установить 32-разрядную поддержку. В данный момент необходимо включить [мультиlib] репозиторий путем добавления этих строк к pacman.conf
:
[multilib]
Include = /etc/pacman.d/mirrorlist
Посмотрите Arch64 FAQ и Используя 32 разрядных приложения на Arch64 на Wiki для получения дополнительной информации.
Это произведет номера строки недопустимых строк:
sed -n '/\([a-z]\+\).*\1_KO/b;/\([a-z]\+\)_KO.*\1/b;=' input_file
Но не соглашения с несколькими “_KO” на одной строке.
Это должно быть более надежным и портативным:
awk '{for(i=1;i<=NF;i++)if((s=$i)~/^([a-z]+)_KO/){sub(/_KO$/,"",s);o=0;for(j=1;j<=NF;j++)if($j==s)o=1;if(!o)printf"line %d unmatched %s\n",NR,s}}' input_file
Это более хитро, более эффективно и поддерживает несколько шаблонов, но как зависит от сортировки, настройки локали могут влиять на ее успех:
ruby -nae '$F.sort!.select!{|v|v=~/^[a-z]+(_KO)?$/};$F.each_with_index{|v,k|puts"line #{$.} unmatched #{v}"if v[/^([a-z]+)_KO$/]and$F[k-1]!=$1}' input_file
В основном то же как вышеупомянутое awk
решение, но взгляды, менее подробные в perl
:
perl -nae 'for$k(grep/^[a-z]+_KO$/,@F){print"line $. unmatched $k\n"unless grep{$_ eq substr$k,0,-3}@F}' input_file
Некоторый загадочный жемчуг:
perl -ne '/(\w+)_KO\b/ && !/\b$1(?!_KO)\b/ && print "invalid line $.: missing $1\n"' filename
/(\w+)_KO\b/
найдите "_KO" слово и получите часть non-KO в переменную $1
!/\b$1(?!_KO)\b/
верно, если нет НИКАКОГО "автономного" слова без _KO (\b
граница слова),
Если оба тех условия верны, печатают сообщение об ошибке.
Определить, "допустим" ли файл, также
output=$(perl -ne '/(\w+)_KO\b/ && !/\b$1(?!_KO)\b/ && print "invalid line $.: missing $!\n"' filename)
[ -z "$output" ] && echo valid
или
perl -ne '
BEGIN {$count = 0}
if (/(\w+)_KO\b/ && !/\b$1(?!_KO)\b/) {print "invalid line $.: missing $!\n"; $count++}
END {$count == 0 && print "valid\n"}
' filename
\b
к Вашему сопоставлению с образцом regex, согласно Вашим объяснениям. Я не знаю синтаксис жемчуга, поэтому если я ошибаюсь, не смущаются повторно изменять.
– rahmu
07.05.2012, 18:07
sed
. Вот ошибка, которую я получаю:sed: Label too long: /\([a-z]\+\).*\1_KO/b;/\([a-z]\+\)_KO.*\1/b;=
. Я попытаюсь достать GNU sed, но это не легко сделать здесь... – rahmu 07.05.2012, 13:38awk
сценарий работал отлично спасибо. Не берите это неправильный путь, но я не нахожу это очень изящным к "в лоб" как это вручную по каждому полю. Я уверен, что Вы соглашаетесь. Должен быть более изящный способ обнаружить, если подобранный шаблон повторяется несколько раз на строке. – rahmu 07.05.2012, 15:28