Блоґ одного кібера

Історія хвороби контуженого інформаційним вибухом

Лапки в bash та pss з awk

leave a comment »

Є чудова команда для пошуку коду – pss. Ставиться через pip.

Тільки іноді біда – вона шукає рядки , і іноді те що вона знаходить – мінімізований JavaScript. А це означає що це всі файли зліплені в один рядок на кількасот кілобайт. Звісно мінімізований JavaScript мало кого цікавить, і його варто було б відфільтрувати. Але власник проекту сказав що функцію ігнорування такого коду реалізовувати не буде. Що не страшно, бо є труби і awk. AWK – це майже як grep, тільки з більшими можливостями, здається зовсім тюрінг-повна. Я якось рік тому почав її вивчати а потім забув. 🙂

І от, щоб відфільтрувати задовгі рядки, досить такої програми на awk:

lenght($0) < 1000


І от я пишу:

pss TextToSearch | awk "lenght($0) < 1000"

А воно не фільтрує!

Виявляється, за $0 – спершу береться bash. І echo "$0" дасть нам на виході слово "bash". А echo '$0' – сам "$0". Ну й зрозуміло що length(bash) – таки менше 1000, а якщо точно, то:

$ awk '{ print length(bash)}'
0

Напевне тому що змінна bash не визначена. Бо

$ awk '{ print length("bash")}'
4

awk_sed

І тому – при змішуванні таких екзотичних мов програмування, головне не переплутати що треба екранувати, і хто на які лапки як реагує.

Written by bunyk

25 Вересня, 2013 at 16:05

Опубліковано в Інструменти, Кодерство

Tagged with

Напишіть відгук

Заповніть поля нижче або авторизуйтесь клікнувши по іконці

Лого WordPress.com

Ви коментуєте, використовуючи свій обліковий запис WordPress.com. Log Out /  Змінити )

Google photo

Ви коментуєте, використовуючи свій обліковий запис Google. Log Out /  Змінити )

Twitter picture

Ви коментуєте, використовуючи свій обліковий запис Twitter. Log Out /  Змінити )

Facebook photo

Ви коментуєте, використовуючи свій обліковий запис Facebook. Log Out /  Змінити )

З’єднання з %s

Цей сайт використовує Akismet для зменшення спаму. Дізнайтеся, як обробляються ваші дані коментарів.

%d блогерам подобається це: