Команда awk для вырезания URL - PullRequest
0 голосов
/ 27 мая 2020

Я хочу разрезать свой URL https://jenkins-crumbtest2.origin-ctc-core-nonprod.com/ на https://origin-ctc-core-nonprod.com Я пробовал несколько способов справиться с этим

$ echo https://jenkins-crumbtest2-test.origin-ctc-core-nonprod.com/ | cut -d"/" -f3 | cut -d"/" -f5
jenkins-crumbtest2.origin-ctc-core-nonprod.com

У меня есть 3 входа, которые Я хочу пройти, чтобы получить ожидаемый результат. Я хочу передать любой из входных данных, чтобы получить тот же результат.

Вход:

1. https://jenkins-crumbtest2-test.origin-ctc-core-nonprod.com/ (or) 
2. https://jenkins-crumbtest2.origin-ctc-core-nonprod.com/ (or)
3. https://jenkins-crumbtest2-test-lite.origin-ctc-core-nonprod.com/

Ожидаемый результат:

https://origin-ctc-core-nonprod.com

Кто-нибудь может мне помочь?

Ответы [ 2 ]

2 голосов
/ 27 мая 2020

Не могли бы вы попробовать следующее. Написано и протестировано только на показанных образцах.

awk '{gsub(/:\/\/.*test\.|:\/\/.*crumbtest2\.|:\/\/.*test-lite\./,"://")} 1' Input_file

ИЛИ приведенная выше форма решения, не состоящего из одного вкладыша, выглядит следующим образом.

awk '                                                                    ##Starting awk program from here.
{
  gsub(/:\/\/.*test\.|:\/\/.*crumbtest2\.|:\/\/.*test-lite\./,"://")     ##Gobally substituting everything till test OR crumbtest OR test-lite with :// in line.
}
1                                                                        ##Printing current line here.
'  Input_file  ##Mentioning Input_file name h
2 голосов
/ 27 мая 2020

Этот awk пропускает записи, в которых нет фиксированной строки origin-ctc-core-nonprod.com:

awk 'match($0,/origin-ctc-core-nonprod\.com/){print "https://" substr($0,RSTART,RLENGTH)}'

Вы можете использовать его с: echostring| awk ..., catfile| или awk ...file.

Пояснение:

awk '                                           # using awk
match($0,/origin-ctc-core-nonprod\.com/) {      # if fixed string is matched
    print "https://" substr($0,RSTART,RLENGTH)  # output https:// and fixed string
    # exit                                      # uncomment if you want only 
}'                                              # one line of output like in sample

Или если вам не нужна часть https://, вы можете просто использовать grep:

grep -om 1 "origin-ctc-core-nonprod\.com"

Затем снова:

$ var=$(grep -om 1 "origin-ctc-core-nonprod\.com" file) && echo https://$var
...