For instance, the following list...:
- name_1: name_11:value-1
name_2: value-2
name_3: http://value-3
- name_4: https://value-4
name_5: name_51:value-5
name_6: value-61:value-62:value-63
... must be transformed into:
- name_1: value-1
name_2: value-2
name_3: http://value-3
- name_4: https://value-4
name_5: value-5
name_6: value-61:value-62:value-63
The following sed command removes all second "name" fields, including when they match 'http[s]*':
sed -E 's|([[:blank:]-]+[[:alnum:]_\.-]+:[[:blank:]]+)[[:alnum:]_\.-]+:([^:]+)$|\1\2|g' file
- name_1: value-1
name_2: value-2
name_3: //value-3
- name_4: //value-4
name_5: value-5
name_6: value-61:value-62:value-63
Any suggestion?
Use an alternation ((https?:)|[[:alnum:]_.-]+:)
that captures http:
or https:
:
sed -E 's/([[:blank:]-]+[[:alnum:]_.-]+:[[:blank:]]+)((https?:)|[[:alnum:]_.-]+:)([^:]+)$/\1\3\4/g' file