Добрый день подскажите пожалуйста
Мне нужно получить все слова, заключеные в двойные кавычки, длина и позиции могут меняться поэтому awk не подходит, с sed пока не разобралсяпробую следующим образом
$echo 'списки всех студентов{"Иванов": 2, "Петров": 1, "Сидоров": 3, "Васильев": 2}' | grep -Po ' "\K[^"]*'
вывод
Петров
Сидоров
ВасильевПервую позицию съело потому что перед ней нет пробела
Как получить все вхождения
Разбирая JSON, используй правильный инструмент:$ echo '{"Иванов": 2, "Петров": 1, "Сидоров": 3, "Васильев": 2}' | jq -r 'keys []'
Васильев
Иванов
Петров
Сидоров
>[оверквотинг удален]
> могут меняться поэтому awk не подходит, с sed пока не разобрался
> пробую следующим образом
> $echo 'списки всех студентов{"Иванов": 2, "Петров": 1, "Сидоров": 3, "Васильев": 2}' |
> grep -Po ' "\K[^"]*'
> вывод
> Петров
> Сидоров
> Васильев
> Первую позицию съело потому что перед ней нет пробела
> Как получить все вхожденияА если так?
echo 'списки всех студентов{"Иванов": 2, "Петров": 1, "Сидоров": 3, "Васильев": 2}' | grep -Po '(\{| )"\K[^"]*'
> Добрый день подскажите пожалуйста
> Мне нужно получить все слова, заключеные в двойные кавычки, длина и позиции
> могут меняться поэтому 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[^"]*'
> вывод
> Петров
> Сидоров
> Васильев
> Первую позицию съело потому что перед ней нет пробела
> Как получить все вхождения
>> Добрый день подскажите пожалуйста
>> Мне нужно получить все слова, заключеные в двойные кавычки, длина и позиции
>> могут меняться поэтому 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[^"]*'
>> вывод
>> Петров
>> Сидоров
>> Васильев
>> Первую позицию съело потому что перед ней нет пробела
>> Как получить все вхождения
>[оверквотинг удален]
>>> Мне нужно получить все слова, заключеные в двойные кавычки, длина и позиции
>>> могут меняться поэтому 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[^"]*'
>>> вывод
>>> Петров
>>> Сидоров
>>> Васильев
>>> Первую позицию съело потому что перед ней нет пробела
>>> Как получить все вхождения
>[оверквотинг удален]
>> И кто вам сказал такую чушь про 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[^"]*'
>>>> вывод
>>>> Петров
>>>> Сидоров
>>>> Васильев
>>>> Первую позицию съело потому что перед ней нет пробела
>>>> Как получить все вхождения
>[оверквотинг удален]
>>> Иванов С.
>>> Петров У.
>>> Сидоров
>>> Васильев
>> и в строке можете вообще любую ересь впихнуть -- все равно будет
>> выдавать строго между двойными кавычками...
> Ну и полностью готовый вариант
> 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[^"]*'
>>>>> вывод
>>>>> Петров
>>>>> Сидоров
>>>>> Васильев
>>>>> Первую позицию съело потому что перед ней нет пробела
>>>>> Как получить все вхожденияСпасибо. Классно получилось