• Как сделать двойной grep с условием в bash скрипте?

    @quintera Автор вопроса
    Saboteur, кстати, в вопросе я немного оподливился, ведь файлы могут содержать поле "a=" но без значения, и тогда это условие if [ -n "${a}" -a -n "${b}" ]; уже не работает так, как надо.

    мне нужно условие, которое при парсинге найдет хоть какое-то значение у "a=" и "b=" в файле, в противном случае никаких данных оттуда не парсить.
  • Как сделать двойной grep с условием в bash скрипте?

    @quintera Автор вопроса
    AUser0, подскажите, а как изменить условие, если файл должен содержать 3 шаблона?

    так? поправьте, если ошибаюсь
    if [ -n "${a1}" -a -n "${b1}" -a -n "${c}" ]; then
  • Как сделать двойной grep с условием в bash скрипте?

    @quintera Автор вопроса
    AUser0, ну или заглядывать только в файлы размером 2 килобайта

    этот код работает как надо, только заглядывает абсолютно во все файлы

    #!/bin/bash
    for file in /home/*
    do
           a=$(grep -aohPR -m 1 '(?<=Center X= )\d+' $file | tr -d '\n')
           c=$(grep -aohPR -m 1 '(?<=Center Y= )\d+' $file)
    if [ -n "${a}" -a -n "${b}" ]; then
          echo "${a}-${b}" >>out.txt
    fi
    done


    куда и как вставить код?
    find -size +$((1*1024))c -size -$((3*1024))c
  • Как сделать двойной grep с условием в bash скрипте?

    @quintera Автор вопроса
    Saboteur, ну или заглядывать только в файлы размером 2 килобайта

    этот код работает как надо, только заглядывает абсолютно во все файлы

    #!/bin/bash
    for file in /home/*
    do
           a=$(grep -aohPR -m 1 '(?<=Center X= )\d+' $file | tr -d '\n')
           c=$(grep -aohPR -m 1 '(?<=Center Y= )\d+' $file)
    if [ -n "${a}" -a -n "${b}" ]; then
          echo "${a}-${b}" >>out.txt
    fi
    done


    куда и как вставить код?
    find -size +$((1*1024))c -size -$((3*1024))c
  • Как сделать двойной grep с условием в bash скрипте?

    @quintera Автор вопроса
    Saboteur, товарищ AUser0 уже подсказал верное решение. Теперь я не могу додуматься как не заглядывать во все файлы в системе, а только в те, названия которых начинаются с "file", например file1.txt, file2.txt, ..., file2022.txt
  • Как сделать двойной grep с условием в bash скрипте?

    @quintera Автор вопроса
    Не могли бы дать маленькую подсказку, если нужные мне файлы раскиданы по всей системе, но начинаются с одинакового слова "file", например file1.txt, file2.txt и тд, как мне задать поиск? чтобы не во все файлы заглядывать?
  • Как как распарсить .rc файл командой sed?

    @quintera
    Привет! Не могли бы помочь со скриптом, так как у меня опыта с этим мало, вроде бы в вопросе подробно описал что нужно. Возможно для меня grep тоже не лучший вариант.

    https://qna.habr.com/q/1228252
  • Как в Linux вывести данные из файлов и записать построчно?

    @quintera Автор вопроса
    Виктор Таран, так этак пытался, скрипт не соблюдает условие, пишет в dstfile всё что совпадает со всех файлов, просто пропуская то, что не совпадает.

    #!/bin/bash
    
    for file in /home/*
    do
        a=$(grep -aohPR '(?<!\d)\d{12}(?!\d)' $file | tr -d '\n' >> dstfile.txt)
        b=$(grep -aohPR -m 1 '(?<=Center X= )\d+' $file | tr -d '\n' >> dstfile.txt)
        c=$(grep -aohPR -m 1 '(?<=Center Y= )\d+' $file | tr -d '\n' >> dstfile.txt)
        d=$(grep -aohPR -m 1 '(?<=Possibility= )\D\d+' $file | tr -d '\n' >> dstfile.txt)
        e=$(grep -aohPR -m 1 '(?<=Type= )\w+\W\w+' $file | tr -d '\n' >> dstfile.txt)
        f=$(grep -aohPR '\b[RL]\b' $file | tail -n 5 >> dstfile.txt)
    done
    if [ $a -eq 0 ] && [ $b -eq 0 ] && [ $c -eq 0 ] && [ $d -eq 0 ] %% [ $e -eq 0 ] && [ $f -eq 0 ]
    then
        echo '$a+$b+$c+$d+$e+$f'
    else
     echo '' > /dev/null
    fi


    результат:
    78022240213637111919%74Benign MCR <---- с 1 файла все нужные значение записались
    61082840248840622061%69Malign MCR <---- со 2 файла тоже всё норм
    37111919%74Benign MCL <---- в 3 файле удалил 12значное число, скрипт этот файл не скипнул, записал остальные значения

    и кстати как расставить какой-нибудь символ между значениями? тире либо слэш?
    780222402136-3711-1919-%74-Benign MC-R
  • Как в Linux вывести данные из файлов и записать построчно?

    @quintera Автор вопроса
    Виктор Таран, вот эту бы часть на английском

    если а не пусто
    и если есть б не пусто
    то
    echo '$a+$b'
    эльс не хватило переменных
  • Как в Linux вывести данные из файлов и записать построчно?

    @quintera Автор вопроса
    Сергей Паньков, не имел опыта с питоном, да и я не кодер ни разу. Может всё-таки попробовать с помощью bash скрипта?
    все данные получается вытащить по отдельности, теперь нужна помощь с объединением всех команд в одно целое, но так, чтобы при отсутствий в каком-нибудь файле хотя бы одного шаблона, файл скипался

    grep -aohPR '(?<!\d)\d{12}(?!\d)' /path > example.txt

    grep -aohPR -m 1 '(?<=Center X= )\d+' /path > example.txt

    grep -aohPR -m 1 '(?<=Center Y= )\d+' /path > example.txt

    grep -aohPR -m 1 '(?<=Possibility= )\D\d+' /path > example.txt

    grep -aohPR -m 1 '(?<=Type= )\w+\W\w+' /path > example.txt

    grep -aohPR '\b[RL]\b' /path | tail -n 1 > example.txt
  • Как в Linux вывести данные из файлов и записать построчно?

    @quintera Автор вопроса
    Виктор Таран,

    grep -aohPR '\b[RL]\b' /path > example.txt
    grep -aohPR '\b[RL]\b' /path | tail -n 1 > example.txt


    эти команды одинаково справились с предпоследней задачей (вытащить R либо L), осталось только соединить их все воедино, не могли бы Вы мне помочь?
  • Как в Linux вывести данные из файлов и записать построчно?

    @quintera Автор вопроса
    Сергей Паньков, это Structured Report файлы в формате *.dcm (DICOM) формируются искусственным интеллектом, содержит информацию о возможных отклонениях в рентген снимках пациентов, 780222402136 (id пациента), X, Y (координаты на снимке), Possibility (вероятность), Type (тип отклонения), R либо L (правая либо левая область пациента).

    ссылка на 1 из файлов
    https://cloud.mail.ru/public/4UQS/qQ3KDfLN4

    при открытии dicom-просмотрщиком выглядит вот так
    638ae1619b9ad758111178.jpeg
  • Как в Linux вывести данные из файлов и записать построчно?

    @quintera Автор вопроса
    интересно, но мозгов не хватает без подсказок. скрипты пишу иногда, но не такие. ниже написал, у меня получилось вырывать нужные данные по отдельности
  • Как в Linux вывести данные из файлов и записать построчно?

    @quintera Автор вопроса
    Вы уверены, что в бинарном формате не надйётся подобных последовательностей случайно?


    Сергей Паньков, уверен на 100%

    вы понимаете насколько чудовищно этот бинарный (судя по всему) формат отличается от того, что вы написали в постановке вопроса? Приложите уж лучше файл в бинарном виде или откройте его в 16ричном редакторе и скрньте.


    это вроде не бинарный формат, вот как в терминале на самом деле выглядит содержимое в конце файлов, из которого у меня не получается вырвать букву R либо L

    @Image Laterality��^M�^@^@^@^@����^@^@^@^@@^@`�UT^@^@^B^@^@^@R ��^M�^@^@^@^@����^@^@^@^@
  • Как в Linux вывести данные из файлов и записать построчно?

    @quintera Автор вопроса
    спасибо, Ваша подсказка помогла немного продвинуться, я смог вывести нужные данные по отдельности, теперь не знаю как объединить это всё в одно целое, но так, чтобы при отсутствий в каком-нибудь файле хотя бы одного элемента, файл скипался

    grep -aohPR '(?<!\d)\d{12}(?!\d)' /path > example.txt
    вывел 780222402136
    grep -aohPR -m 1 '(?<=Center X= )\d+' /path > example.txt
    вывел 3711
    grep -aohPR -m 1 '(?<=Center Y= )\d+' /path > example.txt
    вывел 1919
    grep -aohPR -m 1 '(?<=Possibility= )\D\d+' /path > example.txt
    вывел %74
    grep -aohPR -m 1 '(?<=Type= )\w+\W\w+' /path > example.txt
    вывел Benign MC

    P.S: не получается только вывести значение который выделил жирным, там будет R либо L
    @Image LateralityM-~M-^?^MM-`^@^@^@^@M-~ M-^?M-]M-`^@^@^@^@@^@`M-!UT^@^@^B^@^@^@R M-~M-^?^MM-`^@^@^@^@M-~M-^?M-]M-`^@^@^@

    хотя бы эта часть всегда одинакова, которая до R
    @Image LateralityM-~M-^?^MM-`^@^@^@^@M-~ M-^?M-]M-`^@^@^@^@@^@`M-!UT^@^@^B^@^@^@R M-~M-^?^MM-`^@^@^@^@M-~M-^?M-]M-`^@^@^@
  • Как в Linux вывести данные из файлов и записать построчно?

    @quintera Автор вопроса
    Сергей Паньков, привел без тега, чтобы выделить жирным шрифтом то, что нужны вывести. содержание каждого файла аналогично, за исключением значении выделенных жирным, и еще нескольких ненужных мне значений.
    элементы "Center X=", "Center Y=", "Possibility=", "Type=", "Image Laterality=" есть в каждом нужном мне файле, если в каком-то файле нет хотя бы одного из этих элементов, то никакие данные мне из этого файла не нужны.

    ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@ ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@ ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@ ^@^@^@^@^@^@^@^@DICM^B^@^@^@UL^D^@M-<^@^@^@^B^@^A^@OB^@^@^B^@^@^@^@^A^B^@^B^@UI^ ^^@1.2.840.10008.5.1.4.1.1.88.11^@^B^@^C^@UI,^@2.25.1394455567981633947292924600 3593050180^@^B^@^P^@UI^T^@1.2.840.10008.1.2.1^@^B^@^R^@UI^^^@1.2.826.0.1.3680043 .8.165.100^@^B^@^S^@SH
    ^@AK_STR_4_0^H^@^E^@CS
    ^@ISO_IR 192^H^@^R^@DA^H^@20221130^H^@^S^@TM
    ^@093512.236^H^@^T^@UI^N^@1.2.3.4.5.6.7^@^H^@^V^@UI^^^@1.2.840.10008.5.1.4.1.1.8 8.11^@^H^@^X^@UI,^@2.25.13944555679816339472929246003593050180^@^H^@ ^@DA^H^@202 21130^H^@#^@DA^H^@20221130^H^@0^@TM
    ^@092002.000^H^@3^@TM
    ^@093512.236^H^@P^@SH^H^@1835797 ^H^@`^@CS^B^@SR^H^@p^@LO^D^@Agfa^H^@M-^P^@PN^@^ @^H^@^Q^QSQ^@^@^@^@^@^@^P^@^P^@PN^N^P^@ ^@LO^L^@780222402136^P^@ 0^@DA^H^@19780222^P^@@^@CS^B^@F ^X^@^B^PUI^P^@1.2.3.4.5.6.7.20 ^@^M^@UI*^@1.2.82 6.0.1.3680043.8.165.100703.11836029^@ ^@^N^@UI,^@2.25.96426502300340166287633794 410492720461^@ ^@^P^@SH^H^@1835797 ^@^Q^@IS^B^@1 ^@^S^@IS^B^@1 @^@@M- CS
    ^@CONTAINER @^@CM- SQ^@^@M-^?M-^?M-^?M-^?M-~M-^?^@M-`M-^?M-^?M-^?M-^?^H^@^@^ASH^ F^@121144^H^@^B^ASH^D^@DCM ^H^@^D^ALO^P^@AKGUN BDT ReportM-~M-^?^MM-`^@^@^@^@M-~ M-^?M-]M-`^@^@^@^@@^@PM- CS^H^@SEPARATE@^@rM-#SQ^@^@^@^@^@^@@^@M-^QM-$CS^H^@PART IAL @^@M-^SM-$CS
    ^@UNVERIFIED@^@0M-'SQ^@^@M-^?M-^?M-^?M-^?M-~M-^?^@M-`M-^?M-^?M-^?M-^?@^@^PM- CS^ H^@CONTAINS@^@@M- CS^D^@TEXT@^@CM- SQ^@^@M-^?M-^?M-^?M-^?M-~M-^?^@M-`M-^?M-^?M-^ ?M-^?^H^@^@^ASH^F^@121070^H^@^B^ASH^D^@DCM ^H^@^D^ALO^H^@FindingsM-~M-^?^MM-`^@^ @^@^@M-~M-^?M-]M-`^@^@^@^@@^@`M-!UT^@^@V^@^@^@Abnormal finding 1: Center X= 3711 , Center Y= 1919, Possibility= %74, Type= Benign MC
    M-~M-^?^MM-`^@^@^@^@M-~M-^?^@M-`M-^?M-^?M-^?M-^?@^@^PM- CS^H^@CONTAINS@^@@M- CS^ D^@TEXT@^@CM- SQ^@^@M-^?M-^?M-^?M-^?M-~M-^?^@M-`M-^?M-^?M-^?M-^?^H^@^@^ASH^F^@12 1077^H^@^B^ASH^D^@DCM ^H^@^D^ALO
    ^@ConclusionM-~M-^?^MM-`^@^@^@^@M-~M-^?M-]M-`^@^@^@^@@^@`M-!UT^@^@^B^@^@^@- M-~M -^?^MM-`^@^@^@^@M-~M-^?^@M-`M-^?M-^?M-^?M-^?^H^@M-^Y^QSQ^@^@M-^?M-^?M-^?M-^?M-~M -^?^@M-`M-^?M-^?M-^?M-^?^H^@P^QUI^\^@1.2.840.10008.5.1.4.1.1.1.2^@^H^@U^QUI:^@1. 3.51.0.7.1467808936.33695.24902.40691.22053.24371.51322^@^H^@M-^Y^QSQ^@^@M-^?M-^ ?M-^?M-^?M-~M-^?^@M-`M-^?M-^?M-^?M-^?^H^@P^QUI^\^@1.2.840.10008.5.1.4.1.1.11.1^H ^@U^QUI,^@2.25.253464016771080552631556563039538460246M-~M-^?^MM-`^@^@^@^@M-~M-^ ?M-]M-`^@^@^@^@M-~M-^?^MM-`^@^@^@^@M-~M-^?M-]M-`^@^@^@^@@^@^PM- CS^H^@CONTAINS@^ @@M- CS^D^@TEXT@^@CM- SQ^@^@M-^?M-^?M-^?M-^?M-~M-^?^@M-`M-^?M-^?M-^?M-^?^H^@^@^A SH^F^@121322^H^@^B^ASH^D^@DCM ^H^@^D^ALO^@^@M-~M-^?^MM-`^@^@^@^@M-~M-^?M-]M-`^@^ @^@^@M-~M-^?^MM-`^@^@^@^@M-~M-^?^@M-`M-^?M-^?M-^?M-^?@^@^PM- CS^H^@CONTAINS@^@@M - CS^D^@TEXT@^@CM- SQ^@^@M-^?M-^?M-^?M-^?M-~M-^?^@M-`M-^?M-^?M-^?M-^?^H^@^@^ASH^ F^@111027^H^@^B^ASH^D^@DCM ^H^@^D^ALO^P^@Image LateralityM-~M-^?^MM-`^@^@^@^@M-~ M-^?M-]M-`^@^@^@^@@^@`M-!UT^@^@^B^@^@^@R M-~M-^?^MM-`^@^@^@^@M-~M-^?M-]M-`^@^@^@
  • Почему не пингуется интерфейс микротика с vps сервера?

    @quintera Автор вопроса
    Andrey Barbolin, да, я забыл пробросить маршрут с vps. спасибо большое бро

    п.с. ip ro add 192.168.88.0/24 via 10.10.10.1
    ip route add 192.168.88.0/24 dev wg0
  • Почему не пингуется интерфейс микротика с vps сервера?

    @quintera Автор вопроса
    Andrey Barbolin, а из сети 192.168.1.0/24 всё пингуется
    634ef90e603c2543621975.jpeg