История изменений
Исправление firkax, (текущая версия) :
Хуже того:
printf '\xff\xfe\x48\x00\x65\x00\x6c\x00\x6c\x00\x6f\x00' | grep -PUa '^' || echo "false"
printf '\xff\xfe\x48\x00\x65\x00\x6c\x00\x6c\x00\x6f\x00' | grep -PUa '\xff' || echo "false"
printf '\xff\xfe\x48\x00\x65\x00\x6c\x00\x6c\x00\x6f\x00' | grep -PUa '\xfe' || echo "false"
printf '\xff\xfe\x48\x00\x65\x00\x6c\x00\x6c\x00\x6f\x00' | grep -PUa '\x48' || echo "false"
printf '\xff\xfe\x48\x00\x65\x00\x6c\x00\x6c\x00\x6f\x00' | grep -PUa '\x00' || echo "false"
из этих команд первые три не матчатся, последние две матчатся.
А ещё:
printf '\x48\x00\x65\x00\x6c\x00\x6c\x00\x6f\x00' | grep -PUa '^' || echo "false"
printf '\xff\x48\x00\x65\x00\x6c\x00\x6c\x00\x6f\x00' | grep -PUa '^' || echo "false"
printf '\xfe\x48\x00\x65\x00\x6c\x00\x6c\x00\x6f\x00' | grep -PUa '^' || echo "false"
printf '\xfd\x48\x00\x65\x00\x6c\x00\x6c\x00\x6f\x00' | grep -PUa '^' || echo "false"
Почему всё так - не знаю. Подозрений два: 1) баг в grep с signed vs unsigned, 2) юникод как-то напакостил
Исправление firkax, :
Хуже того:
printf '\xff\xfe\x48\x00\x65\x00\x6c\x00\x6c\x00\x6f\x00' | grep -PUa '^' || echo "false"
printf '\xff\xfe\x48\x00\x65\x00\x6c\x00\x6c\x00\x6f\x00' | grep -PUa '\xff' || echo "false"
printf '\xff\xfe\x48\x00\x65\x00\x6c\x00\x6c\x00\x6f\x00' | grep -PUa '\xfe' || echo "false"
printf '\xff\xfe\x48\x00\x65\x00\x6c\x00\x6c\x00\x6f\x00' | grep -PUa '\x48' || echo "false"
printf '\xff\xfe\x48\x00\x65\x00\x6c\x00\x6c\x00\x6f\x00' | grep -PUa '\x00' || echo "false"
из этих команд первые три не матчатся, последние две матчатся.
А ещё:
printf '\x48\x00\x65\x00\x6c\x00\x6c\x00\x6f\x00' | grep -PUa '^' || echo "false"
printf '\xff\x48\x00\x65\x00\x6c\x00\x6c\x00\x6f\x00' | grep -PUa '^' || echo "false"
printf '\xfe\x48\x00\x65\x00\x6c\x00\x6c\x00\x6f\x00' | grep -PUa '^' || echo "false"
printf '\xfd\x48\x00\x65\x00\x6c\x00\x6c\x00\x6f\x00' | grep -PUa '^' || echo "false"
Почему всё так - не знаю.
Исходная версия firkax, :
Хуже того:
printf '\xff\xfe\x48\x00\x65\x00\x6c\x00\x6c\x00\x6f\x00' | grep -PUa '^' || echo "false"
printf '\xff\xfe\x48\x00\x65\x00\x6c\x00\x6c\x00\x6f\x00' | grep -PUa '\xff' || echo "false"
printf '\xff\xfe\x48\x00\x65\x00\x6c\x00\x6c\x00\x6f\x00' | grep -PUa '\xfe' || echo "false"
printf '\xff\xfe\x48\x00\x65\x00\x6c\x00\x6c\x00\x6f\x00' | grep -PUa '\x48' || echo "false"
printf '\xff\xfe\x48\x00\x65\x00\x6c\x00\x6c\x00\x6f\x00' | grep -PUa '\x00' || echo "false"
из этих команд первые три не матчатся, последние две матчатся.
А ещё:
printf '\x48\x00\x65\x00\x6c\x00\x6c\x00\x6f\x00' | grep -PUa '^' || echo "false"
printf '\xff\x48\x00\x65\x00\x6c\x00\x6c\x00\x6f\x00' | grep -PUa '^' || echo "false"
Почему всё так - не знаю.