У меня есть следующие строки:
setenv run_area1 root/test1/Apr14_2019_10_32_39/dummy
setenv area2 root/test2/Aug23_2017_14_25_56/dummy
setenv run_area3 testRun/test1/blue_Apr14_2019_08_56_48/dummy/
setenv area4 testRun/test2/Aug23_2017_14_26_03/thing2
Я хочу заменить дату на [DATE]
следующим образом:
setenv run_area1 root/test1/[DATE]/dummy
setenv area2 root/test2/[DATE]/dummy
setenv run_area3 testRun/test1/blue[DATE]/dummy/
setenv area4 testRun/test2/[DATE]/thing2
Мне нужно использовать sed, поэтому я написал следующую команду:
sed 's|[A-Z][a-z]*[0-9]*_[0-9]*_[0-9]*_[0-9]*_[0-9]*|[DATE]|g'
Хорошо работает для строк, но для следующего:
setenv run_area3 testRun/test1/blue_Apr14_2019_08_56_48/dummy/
Я получаю:
setenv run_area3 testRun/test1/blue_[DATE]/dummy/
Я ищу способ использования _
в регулярном выражении. В Perl я знаю, что могу использовать что-то вроде (_|)
, поэтому _
необязательно. Также я мог бы использовать ?
.
В предыдущих темах я видел, что базовый sed
не включает эти опции, и мне нужно использовать \{0,1\}
. ( ссылка ).
Проблема в том, что я не могу понять, как \{0,1\}
решает это. Есть ли другие решения?