powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / аналог awk {'print $12'} в постгресе
15 сообщений из 15, страница 1 из 1
аналог awk {'print $12'} в постгресе
    #39735557
Уткъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Есть строка типа:

Код: sql
1.
'   8       0 sda 49579 6339 5312047 1946043 148076 1015829 8927401 29371843 0 2217463 31317640'



Подскажите как из нее достать 12-й столбец?
...
Рейтинг: 0 / 0
аналог awk {'print $12'} в постгресе
    #39735558
Уткъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
через sustr и position(' ' in ...) олучается очень громоздко
...
Рейтинг: 0 / 0
аналог awk {'print $12'} в постгресе
    #39735568
Уткъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
как-то вот это можно использоваться думаю:

substring('Thomas' from '%#"o_a#"_' for '#')


но не понял как еще..


Код: sql
1.
2.
3.
select substring('   8       0 sda 49579 6339 5312047 1946043 148076 1015829 8927401 29371843 0 2217463 31317640' from '%#"% % % %#"_' for '#')

" 0 2217463 3131764"



надо 0 достать.
...
Рейтинг: 0 / 0
аналог awk {'print $12'} в постгресе
    #39735584
Уткъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сделал чере ж.

но работает вроде


наверняка можно как-то покороче это сделать

Код: sql
1.
select substring(substring('   8       0 sda 49579 6339 5312047 1946043 148076 1015829 8927401 29371843 0 2217463 31317640' from '%#"% % % %#"_' for '#') from 2 for position('' in substring(substring('   8       0 sda 49579 6339 5312047 1946043 148076 1015829 8927401 29371843 0 2217463 31317640' from '%#"% % % %#"_' for '#') from 2 for 100)))
...
Рейтинг: 0 / 0
аналог awk {'print $12'} в постгресе
    #39735599
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уткъ,

Так?
Код: sql
1.
2.
3.
SELECT split_part(
  regexp_replace('   8       0 sda 49579 6339 5312047 1946043 148076 1015829 8927401 29371843 0 2217463 31317640','\s+', ' ', 'g'),
  ' ', 12);
...
Рейтинг: 0 / 0
аналог awk {'print $12'} в постгресе
    #39735652
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уткъсделал чере ж.
Это типичный результат нарушения первой НФ.
...
Рейтинг: 0 / 0
аналог awk {'print $12'} в постгресе
    #39735680
Уткъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vyegorovУткъ,

Так?
Код: sql
1.
2.
3.
SELECT split_part(
  regexp_replace('   8       0 sda 49579 6339 5312047 1946043 148076 1015829 8927401 29371843 0 2217463 31317640','\s+', ' ', 'g'),
  ' ', 12);



Ничего не выводит..
...
Рейтинг: 0 / 0
аналог awk {'print $12'} в постгресе
    #39735681
Уткъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovУткъсделал чере ж.
Это типичный результат нарушения первой НФ.

Критикуешь - предлагай.
...
Рейтинг: 0 / 0
аналог awk {'print $12'} в постгресе
    #39735696
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уткъ,

Чего не выходит-то?..

Покажите желаемый результат, ибо “12-й столбец” непонятно как считать.
...
Рейтинг: 0 / 0
аналог awk {'print $12'} в постгресе
    #39735698
Уткъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vyegorovУткъ,

Чего не выходит-то?..

Покажите желаемый результат, ибо “12-й столбец” непонятно как считать.

он должен вывести вот этот нолик:

8 0 sda 49579 6339 5312047 1946043 148076 1015829 8927401 29371843 0 2217463 31317640
...
Рейтинг: 0 / 0
аналог awk {'print $12'} в постгресе
    #39735705
Ы2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vyegorov, в вашем примере надо брать 13-й «столбец» (ему 0 нужен), т.к. в начале остается пробел.
...
Рейтинг: 0 / 0
аналог awk {'print $12'} в постгресе
    #39735719
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уткъ,

Добавьте вызов `trim()` к аргументу `split_part`.
...
Рейтинг: 0 / 0
аналог awk {'print $12'} в постгресе
    #39735801
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а что разбить в массив по \s+ и вывести 12ю ячейку нельзя?
...
Рейтинг: 0 / 0
аналог awk {'print $12'} в постгресе
    #39736164
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
УткъКритикуешь - предлагай.
Базу надо нормализовать. После чего вывод 12-го поля (или 12-й записи в зависимости от степени нормализации) станет совершенно тривиальной задачей.
...
Рейтинг: 0 / 0
аналог awk {'print $12'} в постгресе
    #39742405
Alex URS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovУткъКритикуешь - предлагай.
Базу надо нормализовать. После чего вывод 12-го поля (или 12-й записи в зависимости от степени нормализации) станет совершенно тривиальной задачей.

тут не в нормализации дело
я так понимаю, у него (Уткъ ) анализ информации по дисковой системе linux, и судя по заглавию темы " awk {'print $12'} " с командами он знаком, и видимо сгруппировать чтото кроме как в БД уже нельзя...

полудуха что разбить в массив по \s+ и вывести 12ю ячейку нельзя?
можно
Код: plsql
1.
select (string_to_array('   8       0 sda 49579 6339 5312047 1946043 148076 1015829 8927401 29371843 0 2217463 31317640',' '))[21]


но у варианта vyegorov (через split_part) как то наглядней по столбцу. массив всё же специфический объект
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / аналог awk {'print $12'} в постгресе
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]