The OpenNET Project / Index page

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



"bash получить все слова, заключеные в двойные кавычки"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на рабочей станции (Офис и текст / Linux)
Изначальное сообщение [ Отслеживать ]

"bash получить все слова, заключеные в двойные кавычки"  +/
Сообщение от Потапенко (?), 10-Дек-20, 00:22 
Добрый день подскажите пожалуйста
Мне нужно получить все слова, заключеные в двойные кавычки, длина и позиции могут меняться поэтому awk не подходит, с sed пока не разобрался

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

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

вывод

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

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

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по времени | RSS]


1. "bash получить все слова, заключеные в двойные кавычки"  +/
Сообщение от ACCA (ok), 10-Дек-20, 02:03 
Разбирая JSON, используй правильный инструмент:

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

Ответить | Правка | Наверх | Cообщить модератору

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

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

Ответить | Правка | Наверх | Cообщить модератору

4. "bash получить все слова, заключеные в двойные кавычки"  +/
Сообщение от fantom (??), 11-Дек-20, 12:34 
> Добрый день подскажите пожалуйста
> Мне нужно получить все слова, заключеные в двойные кавычки, длина и позиции
> могут меняться поэтому 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[^"]*'
> вывод
> Петров
> Сидоров
> Васильев
> Первую позицию съело потому что перед ней нет пробела
> Как получить все вхождения

Ответить | Правка | Наверх | Cообщить модератору

5. "bash получить все слова, заключеные в двойные кавычки"  +/
Сообщение от fantom (??), 11-Дек-20, 12:35 
>> Добрый день подскажите пожалуйста
>> Мне нужно получить все слова, заключеные в двойные кавычки, длина и позиции
>> могут меняться поэтому 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[^"]*'
>> вывод
>> Петров
>> Сидоров
>> Васильев
>> Первую позицию съело потому что перед ней нет пробела
>> Как получить все вхождения

Ответить | Правка | Наверх | Cообщить модератору

6. "bash получить все слова, заключеные в двойные кавычки"  +/
Сообщение от fantom (??), 11-Дек-20, 12:37 
>[оверквотинг удален]
>>> Мне нужно получить все слова, заключеные в двойные кавычки, длина и позиции
>>> могут меняться поэтому 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[^"]*'
>>> вывод
>>> Петров
>>> Сидоров
>>> Васильев
>>> Первую позицию съело потому что перед ней нет пробела
>>> Как получить все вхождения

Ответить | Правка | Наверх | Cообщить модератору

7. "bash получить все слова, заключеные в двойные кавычки"  +/
Сообщение от fantom (??), 11-Дек-20, 12:47 
>[оверквотинг удален]
>>  И кто вам сказал такую чушь про 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[^"]*'
>>>> вывод
>>>> Петров
>>>> Сидоров
>>>> Васильев
>>>> Первую позицию съело потому что перед ней нет пробела
>>>> Как получить все вхождения

Ответить | Правка | Наверх | Cообщить модератору

8. "bash получить все слова, заключеные в двойные кавычки"  +/
Сообщение от Потапенко (?), 13-Дек-20, 12:47 
>[оверквотинг удален]
>>> Иванов С.
>>> Петров У.
>>> Сидоров
>>> Васильев
>> и в строке можете вообще любую ересь впихнуть -- все равно будет
>> выдавать строго между двойными кавычками...
> Ну и полностью готовый вариант
> 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[^"]*'
>>>>> вывод
>>>>> Петров
>>>>> Сидоров
>>>>> Васильев
>>>>> Первую позицию съело потому что перед ней нет пробела
>>>>> Как получить все вхождения

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

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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