friends [entries|archive|friends|userinfo]
sergey_semenov

[ userinfo | ljr userinfo ]
[ archive | journal archive ]

Макрос замены форматированного текста на HTML, апдейт [Mar. 25th, 2019|04:20 am]

hex_laden
[Tags|, ]

Леша его немного подновил, благодарю.

Заметка про макрос для вставки HTML-тегов. Столетней давности приблуда, еще Дима на ЛЖР делал, а до сих пор пользуемся.

Сделал ему репозиторий на GitHub, ибо Леша в свой GitHub почему-то не может меня добавить.

Это репост с сайта http://tolik-punkoff.com
Оригинал: http://tolik-punkoff.com/2019/03/25/makros-zameny-formatirovannogo-teksta-na-html-apdejt/
LinkLeave a comment

Определение номера колонки таблицы по содержимому (заголовку), для вывода ее awk. [Mar. 25th, 2019|02:26 am]

hex_laden
[Tags|, ]

Преамбула


awk, удобный инструмент для работы с табличными данными (текстовыми файлами с разделителями), однако, бывают ситуации, когда необходимо определить нужную колонку в таблице не по номеру, а по содержимому.
Например, имеется такая таблица (в виде текстового файла с разделителями табуляцией), скажем, абстрактная зарплатная ведомость:



Задача - вывести колонку с номерами карт (CardID). В простейшем случае, читаем файл с помощью cat, вывод передаем awk и выводим на экран колонку 3.

cat salary1.txt|awk '{print $3}'

Результат:
CardID
6666-6666-6666-0001
6666-6666-6666-0002
6666-6666-6666-0003
6666-6666-6666-0004
6666-6666-6666-0005
6666-6666-6666-0006
6666-6666-6666-0007
6666-6666-6666-0008
6666-6666-6666-0009
6666-6666-6666-0010
6666-6666-6666-0011
6666-6666-6666-0012
6666-6666-6666-0013


Сложнее будет, если место колонки в таблице поменяется, например, в таблицу добавили информацию о банках и воинских званиях сотрудников:



Понятно, что можно номер колонки поменять, или задавать в параметре скрипта, но лучше найти колонку по заголовку. Недавно как раз попалась вполне производственная задача, где программа, в зависимости от ОС, выводила то одну, то другую табличку.

Нашел вопрос по этому поводу на toster.ru, заданный примерно год назад, но без ответов, что удивительно. А ведь там такие акулы и киты программирования с Хабра плавают...

Впрочем, решение тоже нашлось, хотя на "чистом awk" получались какие-то громоздкие конструкции, так что проще, на мой взгляд, было решить с помощью других утилит.

Решение


1. Вытаскиваем строчку с заголовками grep'ом:

cat salary2.txt|grep -w "CardID"

параметр -w, указывает grep'у вытащить только строки, содержащие слово целиком.

Вывод:
Family Name MilRank BankID CardID Sum

2. Заменяем символы табуляции (\t) на символы перевода строк (\n):

cat salary2.txt|grep -w "CardID"|sed 's/\t/\n/g'

Вывод:
Family
Name
MilRank
BankID
CardID
Sum


Далее, удобства для, буду приводить только следующую команду, без предыдущих.

3. Нумеруем строки с помощью утилиты nl

nl

Вывод:
     1  Family
     2  Name
     3  MilRank
     4  BankID
     5  CardID
     6  Sum


4. grep'ом вытаскиваем строку с номером нужной колонки:

grep -w "CardID"

Вывод:
     5  CardID


5. Получаем номер колонки с помощью awk:

awk '{print $1}'

Вывод:
5
Пункты 3 и 4 можно оптимизировать, заставив grep нумеровать строки с помощью ключа -n:

grep -w -n "CardID"

Вывод:
5:CardID

Тогда для окончательного определения номера, нужно будет задать awk разделитель двоеточие:

awk -F":" '{print $1}'

Вывод:
5

6. Помещаем результат работы всей команды целиком в переменную:

COLNUM=`cat salary2.txt|grep -w "CardID"|sed 's/\t/\n/g'|nl|grep -w "CardID"|awk '{print $1}'`

или

COLNUM=`cat salary2.txt|grep -w "CardID"|sed 's/\t/\n/g'|grep -w -n "CardID"|awk -F":" '{print $1}'`

7. Теперь в awk нужно передать значение переменной из bash скрипта:

Делается это с помощью ключа -v имя=значение
имя - имя переменной, которое будет использовано внутри скрипта awk
значение - значение переменной

cat salary2.txt|awk -v cnum="${COLNUM}" '{print $cnum}'

Вывод:
CardID
6666-6666-6666-0001
6666-6666-6666-0002
6666-6666-6666-0003
6666-6666-6666-0004
6666-6666-6666-0005
6666-6666-6666-0006
6666-6666-6666-0007
6666-6666-6666-0008
6666-6666-6666-0009
6666-6666-6666-0010
6666-6666-6666-0011
6666-6666-6666-0012
6666-6666-6666-0013


Чтобы не выводить сам заголовок, можно добавить sed '1d':

cat salary2.txt|sed '1d'|awk -v cnum="${COLNUM}" '{print $cnum}'

Немного усложним задачу


Предположим, что в файле две таблицы:



Тогда в переменной $COLNUM после выполнения первой команды, окажется значение
5 11, что на самом деле не есть хорошо. Думаю, понятно, из-за чего этот эффект происходит. Нужно добавить команду head -n1, чтобы оставить только одну строчку после первого grep "CardID".

COLNUM=`cat salary3.txt|grep "CardID"|head -n1|sed 's/\t/\n/g'|grep -w -n "CardID"|awk -F":" '{print $1}'`

В следующей команде так же желательно установить awk разделитель "только символ табуляции", чтоб не отреагировал на пятое слово не в таблице (по умолчанию у awk разделитель полей - табуляция и пробел).

cat salary3.txt|awk -v cnum="${COLNUM}" -F "\t" '{print $cnum}'

Ну и можно удалить sed'ом пустые строки и строки, содержащие заголовок CardID:

cat salary3.txt|awk -v cnum="${COLNUM}" -F "\t" '{print $cnum}'|sed '/^$/d'|sed '/CardID/d'

Скрипты целиком


На GitHub
Скачать одним архивом с Mega.nz

UPD:
Нашел обсуждение, наведшее на идею

Это репост с сайта http://tolik-punkoff.com
Оригинал: http://tolik-punkoff.com/2019/03/18/opredelenie-nomera-kolonki-tablitsy-po-soderzhimomu-zagolovku-dlya-vyvoda-ee-awk/
Link2 comments|Leave a comment

БАНЯ, ВОДКА, ГАРМОНЬ И ХАÓС! [Mar. 24th, 2019|07:44 pm]

paperdaemon
[Tags|, ]

LinkLeave a comment

БАНЯ, ВОДКА, ГАРМОНЬ И ЛОСОСЬ [Mar. 24th, 2019|02:35 pm]

paperdaemon
[Tags|]

LinkLeave a comment

БУДУЩЕЕ ЗА БОД! [Mar. 24th, 2019|01:51 pm]

paperdaemon
[Tags|, , , ]



«БОД создаст совершенно особый тип общества»

С февраля 130 жителям американского Стоктона начали выплачивать по $500 в месяц без каких-либо обязательств. Если эксперимент пройдет успешно, то им могут заинтересоваться на федеральном уровне. Мэр города Майкл Таббс уверен — безусловный доход сделает людей счастливее и искоренит бедность.


https://hightech.plus/2019/03/22/bod-sozdast-sovershenno-osobii-tip-obshestva
LinkLeave a comment

Встреча с Алиной Витухновской в Московском Международном Киноколледже 22.03.2019 г. (аудио) [Mar. 23rd, 2019|11:17 pm]

paperdaemon
[Tags|, ]


https://www.youtube.com/watch?v=YD8-_HsKPWc
LinkLeave a comment

БОД: ОСНОВНЫЕ АРГУМЕНТЫ [Mar. 23rd, 2019|05:28 pm]

paperdaemon
[Tags|, , ]



Каждый раз сталкиваясь с аргументацией против безусловного основного дохода (БОД) в духе "это же коммунизм, уравниловка, грабёж налогоплательщиков в пользу лентяев и т.д.", хочу напомнить следующее. Вне зависимости от экономического и социального устройства конкретного типа общества или даже отдельного государства, его декларируемой, открытой целью всегда является рост благосостояния граждан и устойчивое системное развитие. А вот каким именно путём оно будет обеспечено при сохранении текущих, объективных, глобальных тенденций — как правило данный вопрос не сильно беспокоит неприятелей БОД. А тенденции эти вкратце таковы:

1. Устойчивый рост населения планеты.

"Организация Объединенных Наций опубликовала прогноз населения нашей планеты к 2050 году, согласно которому население Земли увеличится на 2,5 миллиарда человек и составит 9,1 миллиардов человек. Эксперты ООН вычислили, что в будущем прирост населения Земли будет происходить исключительно за счет беднейших государств."

Эти цифры говорят сами за себя, притом что действительное количество людей, которые будут жить на планете через несколько десятков лет, равно как и скорость прироста населения, могут де факто разительно отличаться от прогнозируемых, разумеется, в ещё бОльшую сторону.

2. Увеличение антропогенной нагрузки на биосферу (проще говоря — ухудшение экологической обстановки).

Полагаю, что данный вопрос сейчас является настолько открытым и актуальным, что не требует дополнительных и специальных знаний и экспертиз от простого обывателя. Он уже давно и настойчиво требует взвешенных, рациональных и прогрессивных решений от политиков и специалистов.

3. Неуклонное повышение автоматизации труда во всех сферах (от аграрной до информационной).

Занятость в эпоху прогресса представляет собой проблему №1 для всех стран без исключения. И если в развитых странах существует серьёзный финансовый и организационный резерв для сдерживания негативных последствий безработицы, то в развивающихся и бедных его попросту нет, зато есть огромная проблема в виде и без того огромного, постоянно увеличивающегося числа людей, у которых нет будущего, кроме нужды и отчаяния, к тому же подогреваемого опиумом радикально-религиозного безумия.

В условиях глобализации это также означает рост социальной напряжённости, переходящей в перманентные вооружённые конфликты как между бедными странами, так и экспорт терроризма в страны развитые. Поскольку современная мировая политика отказалась от колониализма как сдерживающего фактора, единственным на сегодняшний момент вынужденным рабочим способом остаётся контролируемая миграция. Но и она не может постоянно выполнять роль панацеи на условиях функционирования классических, прежних, ныне безнадёжно устаревших социальных моделей.

Если физические меры сдерживания менее развитых обществ (колониализм) ранее обходились слишком дорого (деньги на постоянные войны и сами жизни граждан — солдат метрополии), то в вероятном грядущем можно будет по крайней мере исключить необходимость высоких военных расходов, также сведя к минимуму и жертвы, неизбежные при столкновении резко отличающихся друг от друга культурных моделей (например, этнические микроконфликты, происходящие между приезжими мигрантами и коренными жителями — это ничто в сравнении с колоссальными потерями от колониальных войн прошлого столетия). Сэкономленные же резервы, помимо прочих источников, могут и должны пойти в обеспечение БОД, а непосредственно БОД, в данном случае, выступит тем самым необходимым амортизирующим, стимулирующим и одновременно — интегрирующим элементом, если, допустим, он будет выплачиваться как гражданам, так и мигрантам с отсутствием криминального поведения. При наличии же склонности к незаконной активности — тот же БОД, ранее выделенный для собственных нужд жизни гражданина, может быть потрачен на его временную изоляцию. Таким образом, с введением БОД, возможно впервые в истории, человеку будет предоставлен настоящий выбор в том, как он хотел бы прожить свою жизнь, уже не будучи принуждённым к труду, но по-прежнему призванным соблюдать законность.

К сожалению, противники БОД часто не видят разницы между необходимостью равных начальных условий, надёжного механизма обеспечения общих правил игры и равенством результата как меры личного успеха. К первому случаю можно отнести как сам БОД (начальный капитал гражданина как своего рода акционера страны), ко второму — законность, как одно из необходимейших условий прозрачной, честной конкуренции, которым часто пренебрегают сторонники дикой, неконтролируемой среды экономических и социальных отношений. Ну и к третьему относится то, что человек смог получить в качестве преимущества, не пренебрегая при этом окружающими. Безусловно, равенство результата в современной либеральной общественной модели недопустимо, ибо оно будет серьёзно тормозить прогресс и демотивировать предпринимателей, людей нестандартного, научного, креативного, конструктивного мышления.

В свою очередь, социальный дарвинизм и вытекающее из него необоснованное высокомерие исходят из глубинного страха его адептов перед потерей не самостоятельно приобретённых, а как правило, передаваемых по наследству родственных привилегий, часто незаконно присваиваемых ими общественных бонусов, не являющихся ни их личной заслугой, ни вознаграждением за талант или так почитаемое ими трудолюбие.

И что самое характерное, но именно олигархия как явление, как триумф социального дарвинизма, убивающее честную конкуренцию, является прямой противоположностью тем самым рыночным механизмам, поддержанию и сохранению которых она якобы способствует.

Например, миллиардерами, на мой взгляд, могут быть либо общепризнанные гении мирового уровня, которых можно пересчитать буквально по пальцам одной руки, либо ими становятся государственные воры из стран с традиционалистским укладом жизни, присвоившие себе национальные богатства. И потому именно БОД может послужить надёжным юридическим основанием, равно как и рабочим способом по-настоящему справедливого и законного перераспределения сверхприбылей от олигархов и естественных монополистов в пользу и на благо прогрессивного развития всего человечества.
LinkLeave a comment

РОССИЙСКИЙ ХУДОЖНИК АНТОН МЫРЗИН: СУДЬБУ МОСКВЫ РЕШАЮТ В КИЕВЕ [Mar. 23rd, 2019|12:56 am]

paperdaemon
[Tags|, , , ]



"Настоящие перемены в человеке и обществе происходят в моменты изломов, на краях прежде устойчивых систем. Если говорить о Советском Союзе, его распаде, нынешней России, как попытке возродить СССР, то все те события, которые происходят на периферии, становятся главными. Москва считает себя центром. Но судьбу Москвы решают в Киеве. Как Россия будет двигаться дальше, насколько эффективно будет Украина сопротивляться, насколько Россия будет осознавать, что она не права, настолько будет от этого зависеть будущее России. Я мрачный оптимист, очень люблю фразу «будет весело и страшно». Это не может долго продолжаться. Людей можно держать в неведении лишь какое-то время. Им нужны новые доктрины, теории и практики. Я за то, чтобы люди перестали бояться по-настоящему нового, а не того, что они привыкли видеть в иллюзорном калейдоскопе жизни."

Читать полностью - https://blackseatv.com/intervju/rossijskij-xudozhnik-anton-myrzin-sudbu-moskvy-reshayut-v-kieve/
LinkLeave a comment

BLESSED BY CHAOS BORN FOR FREEDOM // РОЖДЁННЫЙ СВОБОДНЫМ БЛАГОСЛОВЛЁН ХАОСОМ [Mar. 22nd, 2019|07:39 pm]

paperdaemon
[Tags|, , , , ]



+ RUS )

Лучший способ предотвращения массовых расстрелов — это право граждан на владение оружием. The best way to prevent mass shootings — is citizen gun ownership.
----
Более 2600 плакатов Антона Мырзина aka Paperdaemon:
- скачать одним архивом: https://goo.gl/91j73S
LinkLeave a comment

КЛIНIКА ЛIКАРЯ БАНДЕРИ [Mar. 22nd, 2019|05:05 pm]

paperdaemon
[Tags|]

LinkLeave a comment

КУДА ВЫ ЛОМИТЕСЬ? [Mar. 22nd, 2019|03:37 pm]

paperdaemon
[Tags|, , , , ]



Куда вы ломитесь. Билл Гейтс призвал забыть о космосе и решить 10 глобальных проблем планеты Земля

А я про что толкую уже который год?

Мои антикосмические статьи:

https://cont.ws/@paperdaemon/1248530 ONE WAY TICKET TO THE MARS
https://cont.ws/@paperdaemon/1005520 ЛОЖНЫЙ ПРОГРЕСС ЦИВИЛИЗАЦИИ
https://cont.ws/@paperdaemon/989867 КРУШЕНИЕ КОСМИЧЕСКОГО МИФА
https://cont.ws/@paperdaemon/666323 ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ ПРОТИВ КОСМИЧЕСКИХ ШАРЛАТАНОВ
https://cont.ws/@paperdaemon/634153 ПРОМЕТЕЙ: КОСМИЗМ КАК СМЫСЛОВАЯ РЕКУРСИЯ
https://cont.ws/@paperdaemon/618553 АНТИКОСМИЧЕСКАЯ МНОГОХОДОВКА
https://cont.ws/@paperdaemon/446447 ДЮНА ПРОТИВ КОСМОГОНИИ
https://cont.ws/@paperdaemon/446429 КОСМОС И ХАОС
https://cont.ws/@paperdaemon/445559 КОСМОС КАК ИЛЛЮЗИЯ И ОПАСНАЯ СРЕДА ДЛЯ ЧЕЛОВЕЧЕСКОГО СОЗНАНИЯ
LinkLeave a comment

ИНДУЛЬГИРОВАЙ! [Mar. 21st, 2019|11:28 pm]

paperdaemon
[Tags|]

LinkLeave a comment

ССАНЫЙ ВЕНИК НЕ ПРОКАТИТ! [Mar. 21st, 2019|05:20 pm]

paperdaemon
[Tags|, ]

LinkLeave a comment

ГРУППА СРОЧНОГО ПЕРЕКРЫТИЯ ВЕНИКА - НА ВЫЕЗД! [Mar. 21st, 2019|03:56 pm]

paperdaemon
[Tags|, ]

LinkLeave a comment

ТОРЖЕСТВЕННО ПОЗДРАВЛЯЮ АНОНИМОВ ТИФАРЕТНИКА С ИХ ПРОФЕССИОНАЛЬНЫМ ДНЁМ [Mar. 21st, 2019|03:27 pm]

paperdaemon
[Tags|]



Без вас было бы скучно.
LinkLeave a comment

УТРО МАГА [Mar. 21st, 2019|12:54 pm]

paperdaemon
[Tags|]

Как-то проснулся однажды Алёшка и прямо таки оцепенел. Орёл из его волшебного сна оказался обыкновенным петухом с соседского балкона, что будил его каждое утро, а Дон Хуан — Юрием Васильевичем, его отцом. "Я думал, что Карлос это я!" — завопил Алёшка спросонья, уставившись слегка помятой своей физиономией в зеркало. Но оттуда на него испуганно глядел обычный, слегка придурковатого вида постаревший подросток с выпученными глазами. "Но ведь я столько индульгировал!", — продолжал кричать в пустоту Алёша. "Индульгировал он блядь, индульгент хренов, лучше бы жопу мыл вовремя, глядишь поменьше бы там зудело!" — бросила Лариска, проходя по коридору на кухню за сигаретами. "Жениться тебе пора, сыночка, на крепкой швейцарской селянке, а не пиздостраданиями в сети заниматься!", — вздохнул Юрий Васильевич и с укором поглядел на своё нелепое порождение. "И верни посуд!", — подытожил отец в дверную щель ванной, где затаился Алёша. "А то как лосось там бултыхаешься уже целых полтора часа! 44 года пидарасу! А я, между прочим, депутат Верховной Рады", — язвительно добавил Юрий Васильевич. Алёша искренне верил в то, что так не могло продолжаться долго. По крайней мере после прочтения всех трудов Кастанеды необходимо было начинать действовать. Но Алёша не знал, что именно ему следовало делать. И без того суровая обстановка в семье Гнаткевичей продолжала накаляться.
LinkLeave a comment

ХОРОШЕЕ - ПОВТОРИ [Mar. 21st, 2019|12:26 pm]

paperdaemon
[Tags|, , , ]


----
Более 2600 плакатов Антона Мырзина aka Paperdaemon:
- скачать одним архивом: https://goo.gl/91j73S
Link1 comment|Leave a comment

ПОЛІТИЧНИЙ ГУМОР [Mar. 21st, 2019|11:13 am]

paperdaemon
[Tags|]

Депутат Верховної Ради України, член Радикальної Партії Олексій Юрійович Пiсюн-Стрибунець
LinkLeave a comment

! [Mar. 20th, 2019|07:28 pm]

paperdaemon
[Tags|]

LinkLeave a comment

ПОСУД [Mar. 20th, 2019|05:15 pm]

paperdaemon
[Tags|]

Привіт, я син депутата Верховної Ради України. Я б хотів отримати посуд і розповісти про це в сторіс.
LinkLeave a comment

navigation
[ viewing | most recent entries ]
[ go | earlier ]