Форум программистов, компьютерный форум, киберфорум
Shell, Bash
Войти
Регистрация
Восстановить пароль
Другие темы раздела
Bash Ограничение длины результата содержимого каталога https://www.cyberforum.ru/ shell/ thread2712222.html
Здравствуйте! Необходимо реализовать следующую команду: вывести на экран содержимое каталога /usr/share. Ограничьте длину результата 30 символами. Не могу понять какой командой ограничить длину...
Bash Планирование в bash
Создать расписание выполнения заданий так, чтобы каждый день в какое то определённое время создавался сжатый архив данных одной директории и перемещался в папку архивов другой директории. Надо...
Кириллица в bash Bash
Привет всем. Использую imagemagick и хочу наложить русский текст на фото командой: convert -font font.ttf -fill '#7f7278' -pointsize 55 -gravity center -draw "text 0,0 'Машенька'" white.png...
Bash Шаблон скрипта CYGWIN для последовательного выполнения команд кто-нибудь может посоветовать простой шаблон скрипта для последовательного выполнения с pipe нескольких вычислительных команд с аргументами и с записью результатов в файл. Команды отдельно есть... https://www.cyberforum.ru/ shell/ thread2710251.html
Bash Bash: не понятен момент https://www.cyberforum.ru/ shell/ thread2710219.html
# Создаем временную директорию: firefox_tempdir="$( mktemp -d ~/firefox_tempdir.XXXXXX )"; # Качаем архив.. # Указываем путь до скаченного ахрива:...
Проверка настройки сети в Ubuntu через скрипт Bash Bash
Прошу помощи в решении проблемы, в создании скриптового файла для проверки настройки сети в Ubuntu Необходимо проверить два адреса: ping 8.8.8.8 ping ya.ru Вопрос: какие команды добавить,...
Bash bash на весь экран
Здравствуйте. Подскажите, как сделать, чтобы при запуске терминала в LXDE он сразу запускался на весь экран? До этого в убунте я добавлял строку wmctrl -r :ACTIVE: -b...
Bash Определить mac адреса всех доступных dhcp серверов Доброго времени суток. Подскажите пожалуйста как получить список mac адресов всех доступных dhcp серверов в локальной сети. https://www.cyberforum.ru/ shell/ thread2709410.html
Bash Ищу аналог matplotlib для bash https://www.cyberforum.ru/ shell/ thread2708886.html
Есть аналог matplotlib для bash?
Bash Создание Dockerfile для запуска nano Само задание: создать Dockerfile для образа, который будет удовлетворять следующим свойствам: 1. Базовый образ – ubuntu:16.04 2. Установлен текстовый редактор nano 3. Переменная окружения... https://www.cyberforum.ru/ shell/ thread2707382.html
Bash Удаление строк с НЕуникальным идентификатором https://www.cyberforum.ru/ shell/ thread2707266.html
Доброго времени суток. Возникла необходимость сделать выборку строк из списка файлов, оставив только последнюю версию имени файла в списке. Что-то типа ...
Bash weather+clock #!/bin/bash # # Author: Twily 2014 # unhide_cursor() { printf "\ehttps://midzer.github.io/wttr-switcher/ curl -s 'ru.wttr.in/{Коркино,Челябинск,Калачёво}?format=3' toilet -f future... https://www.cyberforum.ru/ shell/ thread2705915.html
2 / 2 / 0
Регистрация: 16.10.2020
Сообщений: 2
0

awk и удаление лишних строк

16.10.2020, 12:25. Просмотров 1086. Ответов 4
Метки (Все метки)

Здравствуйте!

Столкнулся с проблемой выборки текста средствами awk в файле вида:
Код
TEXT
TEXT XYZ
XY TEXTTE
XY TEXT
XY TEXTTEXT
XY-TEXTTEXT TEXT XY
XY-TEXTTEXT TEXT XY (TEXT)
XY-TEXTTEXT TEXT XY (TEXTTEXT)
XY-TEXTTEXT TEXT XY (TEXTTE)
Хотел получить следующий вывод по самому короткому совпадению:
Код
TEXT
XY TEXTTE
XY TEXT
XY TEXTTEXT
XY-TEXTTEXT TEXT XY
Родилась следующая конструкция:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/awk -f
$0 !~ /((\r\n|\n|\r)$)|(^(\r\n|\n|\r))|^\s*$/{
  while (NR <= 200) {
    z1=$0; y1=$1; y10=$2; y100=$3; x1=length($0); w1=NF;
    getline
    z2=$0; y2=$1; y20=$2; y200=$3; x2=length($0); w2=NF;
    #во имя отладки ты и родилась: print "W="w1","w2", X="x1","x2", Y="y1","y2", Y2="y10","y20", Z="z1","z2;
    if      (z1 ""!= z2 ""&&(y1 ""== y2 ""&& (y10 != ""|| y20 != "")) && x2 < x1) {print z2}
    else if (z1 ""!= z2 ""&&(y1 ""== y2 ""&& (y10 != ""|| y20 != "")) && x1 < x2) {print z1}
    else {printf z1"\n"z2"\n"};
    break
  }
}
Пробежавшись по форуму натолкнулся на следующую конструкцию: awk '!D[$1]++' filename , что меня очень и очень заинтересовало. Прекрасно понимаю, что оно делает, но пока не дошёл как приспособиться к этой конструкции, потому как она делает выборку по первой подстроке.

Больше готового решения жажду наводки. Банальности вроде "прочти руководства тонну" и ссылка: принимаются ;-).

Всем добра.

P.S. задачу свою в любом случае решил башем, хочется средствами awk. Заранее спасибо.
P.P.S. ЧЯДНТ?

Вернуться к обсуждению:
awk и удаление лишних строк
2
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.10.2020, 12:25
Готовые ответы и решения:

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

Сортировка и удаление лишних строк
Помогите с кодом сортировки. В общем в текстовую строку пишите номер магазина, все записи с этим...

Удаление лишних строк в reg-файле
Приветствую всех ! К примеру имеется дамп ветки реестра HKLM\SYSTEM\CurrentControlSet\services...

Удаление лишних строк - доделать макрос
Приветствую знатоков и прошу помочь доделать код. Есть текстовые данные, разбитые постранично. На...

4
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.