Необходимо удалить часть текста из строк

Рейтинг: 0Ответов: 2Опубликовано: 02.06.2023

Имеется следующая таблица:

api-access-decision-service-7f94bdbc4-tk4st       1/1     Running            0          30d
d-api-gateway-6dbd97f767-wgkrz                    1/1     Running            0          30d
d-auth-service-5f5f466864-bdskb                   0/1     Error              15         30d
d-data-export-service-56f6f7f5d8-s4d22            1/1     Running            0          30d
d-fiscal-service-5c5fb97bb8-fgsx5                 1/1     Running            0          30d
d-medods-api-57567d5fb6-gqpkd                     1/1     Running            0          30d
d-medods-ru-7cfccb7667-k2qfx                      1/1     Running            3          30d
d-work-time-service-774c4655c8-vhhc7              1/1     Running            0          30d
db-mongo-0                                        1/1     Running            0          30d
db-postgres-0                                     1/1     Running            0          30d
demodent-analysis-service-58878f5f87-tsd42        1/1     Running            0          10h
demodent-api-gateway-677bf48f98-gmn2n             0/1     Error              10          10h
demodent-auth-service-5757b775cc-vnspn            1/1     Running            0          10h
demodent-client-widget-5484cb77cd-rsw9s           1/1     Running            0          10h
demodent-data-export-service-547f956d94-h86jf     1/1     Running            0          10h
demodent-fiscal-service-78f96756cd-lfwlm          1/1     Running            0          10h
demodent-init-job-6f6gk                           0/1     Completed          0          10h
demodent-mdlp-service-766bbfc4c-ncmr5             1/1     Running            0          10h
demodent-medods-api-846c69cff5-th6nv              1/1     Running            0          10h
demodent-medods-ru-5c8497b7f4-6t84n               1/1     Running            0          10h
demodent-work-time-service-bf476cc5b-5mvkz        1/1     Running            0          10h
demomed-analysis-service-6f955bff79-cqjv9         1/1     Running            0          10h
demomed-api-gateway-fb8547bf8-pmgmk               1/1     Running            0          10h
demomed-auth-service-5b7bfb74b7-fl4d2             1/1     Running            0          10h
demomed-client-widget-6c58686f69-qvj9g            0/1     Error              3          10h
demomed-data-export-service-65988f5665-cgnhp      1/1     Running            0          10h
demomed-fiscal-service-ddc5c858c-q2mdx            1/1     Running            0          10h
demomed-init-job-vsgjv                            0/1     Completed          0          10h
demomed-mdlp-service-64ff6bc456-n7ljx             1/1     Running            0          10h
demomed-medods-api-6469c4d9bd-cvdsq               1/1     Running            0          10h
demomed-medods-ru-545cdf6b94-7bftn                1/1     Running            0          10h
demomed-work-time-service-59fd459dff-99lxg        1/1     Running            0          10h
develop-analysis-service-7ccc9cf785-t54h8         0/1     CrashLoopBackOff   3263       11d
develop-analytics-service-5644b77c8c-jf4zm        1/1     Running            0          17h
develop-api-gateway-64769cd5b8-t86zp              1/1     Running            0          11d
develop-auth-service-697bff744d-9jhjm             1/1     Running            0          30d
develop-client-widget-74d9f5499f-8qgdp            1/1     Running            0          30d
develop-data-export-service-5b45967bcc-6hhwd      1/1     Running            0          30d
develop-fiscal-service-f57b5b4f6-4nmkk            1/1     Running            0          30d
develop-mdlp-service-7f5899b576-fxhpb             0/1     CrashLoopBackOff   5712       20d
develop-medods-api-7975865d6f-gc8dd               1/1     Running            0          17d
develop-medods-ru-795ff487d7-btw5n                1/1     Running            0          14h
develop-work-time-service-66b7b4fd4c-cfh29        1/1     Running            0          30d
develop-workplace-test-service-54f45784b4-jwmkb   1/1     Running            0          30d
file-service-7756cd4486-57xll                     1/1     Running            0          30d
haproxy-597758699d-dk2pg                          1/1     Running            0          30d
m-api-gateway-6b8b899c4f-rn7t5                    1/1     Running            0          30d
m-auth-service-5cf767b6d8-hwtqp                   1/1     Running            0          30d
m-data-export-service-7768f47c4f-xx84k            1/1     Running            7          30d
m-fiscal-service-99b6466cb-hpvmz                  1/1     Running            0          4d16h
m-medods-api-5f97f794b7-668lm                     1/1     Running            0          30d
m-medods-ru-68495c9588-qsn62                      1/1     Running            0          30d
m-work-time-service-5b6c5db699-59x6m              1/1     Running            0          30d
pgbouncer-0-6c478b597-mrjfv                       1/1     Running            0          30d
pgbouncer-1-5f49d47678-5sk6h                      1/1     Running            0          30d
pgbouncer-2-6889f4996c-zftth                      1/1     Running            0          30d
redis-0                                           0/1     Error              5          30d
test38-api-gateway-7bb56c95b5-87m55               1/1     Running            0          30d
test38-auth-service-594ffc4b8-5t72t               1/1     Running            0          30d
test38-client-widget-7bdf4d48bf-c947l             1/1     Running            0          4d16h
test38-medods-api-699f797896-dtswp                1/1     Running            0          30d
test38-medods-ru-c595f44b7-mc5wd                  1/1     Running            0          30d
test39-analysis-service-5c69d8c557-djdj8          1/1     Running            0          13d
test39-api-gateway-6695c7854d-bxcgq               1/1     Running            0          17d
test39-auth-service-6cf9449c69-8xxrf              1/1     Running            0          17d
test39-client-widget-864dc69b9d-p5zs8             1/1     Running            0          17d
test39-data-export-service-6c67d95464-54l4t       1/1     Running            0          17d
test39-fiscal-service-55f9666dd6-hldfq            1/1     Running            0          17d
test39-mdlp-service-5f9d66cb4-q4phq               1/1     Running            0          17d
test39-medods-api-7787c8dd8b-qcr6t                1/1     Running            0          17d
test39-medods-ru-6758549757-hdspt                 1/1     Running            0          5d16h
test39-work-time-service-7ff8467f7b-z5mdv         1/1     Running            0          17d
test40-analysis-service-7f645f5878-b7zjm          0/1     Error              6          7d20h
test40-analytics-service-76fff857bb-svhsh         0/1     Error              7          17h
test40-api-gateway-6bc65b577f-kzpdh               1/1     Running            0          11d
test40-auth-service-85d957c69c-x2hhf              1/1     Running            0          17d
test40-client-widget-78899d9bbb-4zh9h             1/1     Running            0          4d16h
test40-data-export-service-748dccfd56-cv4sj       1/1     Running            0          17d
test40-fiscal-service-bdc4b5fff-fxwnr             1/1     Running            0          17d
test40-mdlp-service-f58f686cd-p4tz7               1/1     Running            0          13d
test40-medods-api-787c8dffb6-b8b6l                1/1     Running            0          17d
test40-medods-ru-5f8dd8cb74-l8p82                 1/1     Running            0          13h
test40-work-time-service-7fc47d9667-gqb65         1/1     Running            0          17d

Необходимо достать отсюда только первый столбец, преобразовав его строки, из формата demomed-analysis-service-6f955bff79-cqjv9 должно получиться demomed-analysis-service, только там, где это необходимо. Достать только первый столбец получилось без проблем, а вывести его строки без лишнего не получается. Помогите пожалуйста :)

Ответы

▲ 1

Скрипт:

cat test.txt | awk '{print $1}' | sed -e 's/-[0-9a-f]\+-[0-9a-z]\+//'

Здесь

  • test.txt ваш файл
  • awk '{print $1}': awk парсит строки, разделяя их на колонки, $1 - переменная, содержащая первую колонку
  • sed обрабатывает строки. команда s заменяет найденные регулярные выражения

Выражение -[0-9a-f]\+-[0-9a-z]\+ читается так: сначала минус, затем непустая (\+) цепочка из цифр и букв от a до f, затем опять минус, и потом непустая цепочка из цифр и букв от a до z. Заменять на пустую строку (//), то есть удалять.

Результат:

api-access-decision-service
d-api-gateway
d-auth-service
d-data-export-service
d-fiscal-service
d-medods-api
d-medods-ru
d-work-time-service
db-mongo-0
db-postgres-0
demodent-analysis-service
demodent-api-gateway
demodent-auth-service
demodent-client-widget
demodent-data-export-service
demodent-fiscal-service
demodent-init-job-6f6gk
demodent-mdlp-service
demodent-medods-api
demodent-medods-ru
demodent-work-time-service
demomed-analysis-service
demomed-api-gateway
demomed-auth-service
demomed-client-widget
demomed-data-export-service
demomed-fiscal-service
demomed-init-job-vsgjv
demomed-mdlp-service
demomed-medods-api
demomed-medods-ru
demomed-work-time-service
develop-analysis-service
develop-analytics-service
develop-api-gateway
develop-auth-service
develop-client-widget
develop-data-export-service
develop-fiscal-service
develop-mdlp-service
develop-medods-api
develop-medods-ru
develop-work-time-service
develop-workplace-test-service
file-service
haproxy
m-api-gateway
m-auth-service
m-data-export-service
m-fiscal-service
m-medods-api
m-medods-ru
m-work-time-service
pgbouncer-mrjfv
pgbouncer-5sk6h
pgbouncer-zftth
redis-0
test38-api-gateway
test38-auth-service
test38-client-widget
test38-medods-api
test38-medods-ru
test39-analysis-service
test39-api-gateway
test39-auth-service
test39-client-widget
test39-data-export-service
test39-fiscal-service
test39-mdlp-service
test39-medods-api
test39-medods-ru
test39-work-time-service
test40-analysis-service
test40-analytics-service
test40-api-gateway
test40-auth-service
test40-client-widget
test40-data-export-service
test40-fiscal-service
test40-mdlp-service
test40-medods-api
test40-medods-ru
test40-work-time-service

Остались необработанными имена

  • pgbouncer-mrjfv, pgbouncer-5sk6h, pgbouncer-zftth, demodent-init-job-6f6gk -- здесь нет набора [0-9a-f]\+
  • db-mongo-0, db-postgres-0, redis-0 -- Здесь нет набора [0-9a-z]\+

Вам нужно решить, как обрабатывать группу pgboucer и что делать с именами сервисов баз данных.

▲ 1

Как-то так:

$ awk '{print $1}' file.txt | awk -F- '{print $1"-"$2"-"$3}'
d-data-export
d-fiscal-service
d-medods-api
d-medods-ru
d-work-time
db-mongo-0
db-postgres-0
demodent-analysis-service
demodent-api-gateway
demodent-auth-service
demodent-client-widget
demodent-data-export
demodent-fiscal-service
demodent-init-job