Заменить строку и переместить деталь в результат, используя Bash - PullRequest
0 голосов
/ 15 мая 2018
text="TASK {5662}: Task definition"
result="TASK [5662](htttps://somelink.com/task/5662): Task definition"

необходимо "{5662}" заменить на "[5662] (htttps: //somelink.com/task/5662)", используя bash

количество номеров задач может быть равно или больше4 цифры

есть идеи?

Ответы [ 2 ]

0 голосов
/ 15 мая 2018

Решение 1-е: Следование awk может помочь вам в этом. (где мне нетрудно кодировать цифры, просто сопоставляя их с помощью регулярных выражений и затем вводя новые значения)

awk --re-interval -v val="[5662](htttps://somelink.com/task/5662)" 'match($0,/[0-9]{4}/){print substr($0,1,RSTART-1) val substr($0,RSTART+RLENGTH+1)}' Input_file

Также --re-interval - для старых версий awk, для новых версий awk может и не понадобиться.

Решение 2-е: С sed жесткими цифрами кодирования:

sed 's#{5662}#[5662](htttps://somelink.com/task/5662)#'  Input_file
0 голосов
/ 15 мая 2018

с использованием регулярных выражений bash и функций расширения

text="TASK {5662}: Task definition"
re='^TASK \{([0-9]{4,})\}: Task definition$'
if [[ $text =~ $re ]]; then
    id=${BASH_REMATCH[1]}
    result=${text/"{$id}"/"[$id](htttps://somelink.com/task/$id)"}
else
    result=
fi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...