The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
bash получить все слова, заключеные в двойные кавычки, !*! Потапенко, 10-Дек-20, 00:22  [смотреть все]
Добрый день подскажите пожалуйста
Мне нужно получить все слова, заключеные в двойные кавычки, длина и позиции могут меняться поэтому awk не подходит, с sed пока не разобрался

пробую следующим образом

$echo 'списки всех студентов{"Иванов": 2, "Петров": 1, "Сидоров": 3, "Васильев": 2}' | grep -Po ' "\K[^"]*'

вывод

Петров
Сидоров
Васильев

Первую позицию съело потому что перед ней нет пробела
Как получить все вхождения

  • bash получить все слова, заключеные в двойные кавычки, !*! ACCA, 02:03 , 10-Дек-20 (1)
    Разбирая JSON, используй правильный инструмент:

    $ echo '{"Иванов": 2, "Петров": 1, "Сидоров": 3, "Васильев": 2}' | jq -r 'keys []'
    Васильев
    Иванов
    Петров
    Сидоров

  • bash получить все слова, заключеные в двойные кавычки, !*! barbos, 16:54 , 10-Дек-20 (2)
    >[оверквотинг удален]
    > могут меняться поэтому awk не подходит, с sed пока не разобрался
    > пробую следующим образом
    > $echo 'списки всех студентов{"Иванов": 2, "Петров": 1, "Сидоров": 3, "Васильев": 2}' |
    > grep -Po ' "\K[^"]*'
    > вывод
    > Петров
    > Сидоров
    > Васильев
    > Первую позицию съело потому что перед ней нет пробела
    > Как получить все вхождения

    А если так?
    echo 'списки всех студентов{"Иванов": 2, "Петров": 1, "Сидоров": 3, "Васильев": 2}' | grep -Po '(\{| )"\K[^"]*'

  • bash получить все слова, заключеные в двойные кавычки, !*! fantom, 12:34 , 11-Дек-20 (4)
    > Добрый день подскажите пожалуйста
    > Мне нужно получить все слова, заключеные в двойные кавычки, длина и позиции
    > могут меняться поэтому awk не подходит, с sed пока не разобрался

    И кто вам сказал такую чушь про awk??? Или сами придумали???


    echo 'списки всех студентов{"Иванов С.": 2, "Петров У.": 1, "Сидоров": 3, "Васильев": 2}' |awk -F'"' '{for (k=0;k<100;k=k+2) {print $k}}'

    > пробую следующим образом
    > $echo 'списки всех студентов{"Иванов": 2, "Петров": 1, "Сидоров": 3, "Васильев": 2}' |
    > grep -Po ' "\K[^"]*'
    > вывод
    > Петров
    > Сидоров
    > Васильев
    > Первую позицию съело потому что перед ней нет пробела
    > Как получить все вхождения

    • bash получить все слова, заключеные в двойные кавычки, !*! fantom, 12:35 , 11-Дек-20 (5)
      >> Добрый день подскажите пожалуйста
      >> Мне нужно получить все слова, заключеные в двойные кавычки, длина и позиции
      >> могут меняться поэтому awk не подходит, с sed пока не разобрался

      И кто вам сказал такую чушь про awk??? Или сами придумали???


      echo 'списки всех студентов{"Иванов С.": 2, "Петров У.": 1, "Сидоров": 3, "Васильев":
      2}' |awk -F'"' '{for (k=0;k<100;k=k+2) {print $k}}'

      Иванов С.
      Петров У.
      Сидоров
      Васильев


      >> пробую следующим образом
      >> $echo 'списки всех студентов{"Иванов": 2, "Петров": 1, "Сидоров": 3, "Васильев": 2}' |
      >> grep -Po ' "\K[^"]*'
      >> вывод
      >> Петров
      >> Сидоров
      >> Васильев
      >> Первую позицию съело потому что перед ней нет пробела
      >> Как получить все вхождения

      • bash получить все слова, заключеные в двойные кавычки, !*! fantom, 12:37 , 11-Дек-20 (6)
        >[оверквотинг удален]
        >>> Мне нужно получить все слова, заключеные в двойные кавычки, длина и позиции
        >>> могут меняться поэтому awk не подходит, с sed пока не разобрался
        >  И кто вам сказал такую чушь про awk??? Или сами придумали???
        >  echo 'списки всех студентов{"Иванов С.": 2, "Петров У.": 1, "Сидоров": 3,
        > "Васильев":
        >  2}' |awk -F'"' '{for (k=0;k<100;k=k+2) {print $k}}'
        > Иванов С.
        > Петров У.
        > Сидоров
        > Васильев

        и в строке можете вообще любую ересь впихнуть -- все равно будет выдавать строго между двойными кавычками...


        >>> пробую следующим образом
        >>> $echo 'списки всех студентов{"Иванов": 2, "Петров": 1, "Сидоров": 3, "Васильев": 2}' |
        >>> grep -Po ' "\K[^"]*'
        >>> вывод
        >>> Петров
        >>> Сидоров
        >>> Васильев
        >>> Первую позицию съело потому что перед ней нет пробела
        >>> Как получить все вхождения

        • bash получить все слова, заключеные в двойные кавычки, !*! fantom, 12:47 , 11-Дек-20 (7)
          >[оверквотинг удален]
          >>  И кто вам сказал такую чушь про awk??? Или сами придумали???
          >>  echo 'списки всех студентов{"Иванов С.": 2, "Петров У.": 1, "Сидоров": 3,
          >> "Васильев":
          >>  2}' |awk -F'"' '{for (k=0;k<100;k=k+2) {print $k}}'
          >> Иванов С.
          >> Петров У.
          >> Сидоров
          >> Васильев
          > и в строке можете вообще любую ересь впихнуть -- все равно будет
          > выдавать строго между двойными кавычками...

          Ну и полностью готовый вариант

          TEXT='списки всех студентов{"Иванов С.": "2", "Петров У.": 1, "Сидоров": 3, "Васильев": 2}'; IDX=`echo $TEXT|grep -o '"' | wc -l`; echo $TEXT| awk -F'"' -v idx="${IDX}" '{for (k=2;k<=idx;k=k+2) {print $k}}'


          >>>> пробую следующим образом
          >>>> $echo 'списки всех студентов{"Иванов": 2, "Петров": 1, "Сидоров": 3, "Васильев": 2}' |
          >>>> grep -Po ' "\K[^"]*'
          >>>> вывод
          >>>> Петров
          >>>> Сидоров
          >>>> Васильев
          >>>> Первую позицию съело потому что перед ней нет пробела
          >>>> Как получить все вхождения

          • bash получить все слова, заключеные в двойные кавычки, !*! Потапенко, 12:47 , 13-Дек-20 (8)
            >[оверквотинг удален]
            >>> Иванов С.
            >>> Петров У.
            >>> Сидоров
            >>> Васильев
            >> и в строке можете вообще любую ересь впихнуть -- все равно будет
            >> выдавать строго между двойными кавычками...
            > Ну и полностью готовый вариант
            > TEXT='списки всех студентов{"Иванов С.": "2", "Петров У.": 1, "Сидоров": 3, "Васильев":
            > 2}'; IDX=`echo $TEXT|grep -o '"' | wc -l`; echo $TEXT| awk
            > -F'"' -v idx="${IDX}" '{for (k=2;k<=idx;k=k+2) {print $k}}'

            Потапенко

            >>>>> пробую следующим образом
            >>>>> $echo 'списки всех студентов{"Иванов": 2, "Петров": 1, "Сидоров": 3, "Васильев": 2}' |
            >>>>> grep -Po ' "\K[^"]*'
            >>>>> вывод
            >>>>> Петров
            >>>>> Сидоров
            >>>>> Васильев
            >>>>> Первую позицию съело потому что перед ней нет пробела
            >>>>> Как получить все вхождения

            Спасибо. Классно получилось




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру