Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
#!/bin/bash
path=./
temp=$path/temp
key_files="name.key masks.key masks2.key primary.key primary2.key header.key"
original_file="$temp/$1"
mkdir -p "$temp"
mkdir -p "$path/keys"
# CR to LF. Конвертируем файл в формат UNIX (Окончания строк LF, вместо CR)
dos2unix -n -q "$1" "$original_file"
# Записываем имена всех ключей во временный файл
grep -E -o 'Keys\\\w+]' "$original_file" | sed -E 's/Keys\\//; s/]//' > $temp/keysname
while read key
do
# Записываем полное содержимое ключа в отдельный файл с его именем
cat $original_file | sed -e '/./{H;$!d;}' -e "x;/$key]/!d" | sed -n "/$key]/!p" > $temp/$key
# Разделяем ключи (name, primary, masks, header...) и записываем в отдельные файлы в папку с именем ключа
mkdir -p "$path/keys/$key"
for file in $key_files;
do
hex=$(cat $temp/$key | tr -d '\n' | sed -E 's/\\//g; s/ //g; s/\$//g' | grep -E -o "$file\"=hex:(\w{2},?)+?" | sed -E "s/$file\"=hex://; s/,//g" | sed -E 's/\w{2}/\\x&/g')
echo -e -n "$hex" > "$path/keys/$key/$file"
# LF to CR ???
# sed 's/$'"/`echo \\\r`/" "$path/keys/$file" > "$path/keys/$file"
done
done < $temp/keysname
# Очистка временных файлов
rm -rf "$temp"
exit 0mkdir -p создаст её со всеми поддиректориями и не будет ныть, если всё уже создано.rm -rf не ругается, если ему ничего не дали.cat, многие утилиты могут принимать на вход файлы (в этом скрипте осталась ещё пара таких мест)sed можно бы использовать скрипт на python или ещё чем-нибудь более человечном.cat file | sed, потому что так удобнее менять sed на что‐то ещё. Но вообще о том, как нужно писать — sed command file (только здесь sed будет открывать файл сам, а не пользоваться stdin), sed command <file, cat file | sed command или даже <file | sed command (zsh) — периодически разгораются жаркие споры. В том числе видел такое и на habrahabr.ru.<file | sed command с достаточно большим файлом — zsh почему‐то на порядок медленнее cat в данном вопросе).
Конвертация электронных ключей ASCII в hex