LINUX.ORG.RU

[[busybox] Awk] регулярки?


0

1

вобщем, поскольку целевая ОС (maemo) упорно не хочет запускать скрипты из rc2.d и плюет на /etc/modules, приходится (из своего скрипта) патчить /etc/event.d/rcS-late. В принципе, получается, но как-то криво...

prng_subst="
    # Initialize PRNG pool with the HW RNG. Slow, but that's ok. 
    URANDOM_POOLSZ=512
    if [ -e /dev/hwrng ]; then
      echo \"Seeding entropy pool\"
      dd if=/dev/hwrng of=/dev/urandom bs=\$URANDOM_POOLSZ count=1
    fi  
"
crypto_ins="
    modprobe dm-mod
    modprobe dm-crypt
    /etc/init.d/cryptdisks start
"

cat /etc/event.d/rcS-late | awk -v dst="$subst_dst" '{ if (index($0, dst) == 0) gsub("sfdisk -l /dev/mmcblk0", dst); print; }' > /tmp/rcS-late.tmp

cat /tmp/rcS-late.tmp | awk -v dst="$prng_subst" -v ins="$crypto_ins" 'BEGIN { RS="" } { if (NR == 6) { printf("\n%s\n%s\n", dst, ins); print; } else if (NR == 15) print ""; else print }' > /etc/event.d/rcS-late
это дело работает, но последнее выражение нарушает в хлам форматирование исходного rcS-late и, самое главное, использование NR в таком контексте кажется мне жутким костылем... а возможности работы с регулярными выражениями там по-моему на порядок скромнее, чем в perl... подскажите, плиз, как избавиться от костыля :)

Ответ на: комментарий от www_linux_org_ru

dd if=/dev/hwrng of=/dev/urandom bs=\$URANDOM_POOLSZ count=1

бэк-слэш точно нужен?

да, иначе awk будет понимать $URANDOM_POOLSZ как переменную

metawishmaster ★★★★★
() автор топика
Ответ на: комментарий от mosfet

да мне нужно на более «низком» уровне - еще до монтирования файловых систем...

metawishmaster ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.