У меня есть команда sed, которая ищет определенное слово в текстовом файле для сопоставления с образцом, а затем добавляет дату в конец строки, содержащей это конкретное слово.это кодовый блок
some_function() {
while IFS=: read -r jname state; do
echo "the job is $name"
if [[ -n ${name} ]]
then
//code to get creation date which works fine
creation_date="00-00-00_00-00-00"
sed -i '/^'$job_name':/s/$/':$creation_date'/' $logs_folder/job_state.$today
fi
done <"$logs_folder/job_state.$today"
}
все работает нормально до команды sed.Эта команда не работает для определенных имен, таких как ARCHIVE-REQUEST - New, ARCHIVE-REQUEST - rss_master
Команда sed выдает ошибку
sed -i '/^ARCHIVE-REQUEST' - 'rss_master:/s/$/:00-00-00_00-00-00/' file.txt
sed: -e expression #1, char 17: unterminated address regex
, а также экранирование этих имен не является опцией, поскольку файл, из которого взяты эти имена, также имеет другой разделителькоторая работает с командой sed, и поскольку этот файл генерируется динамически, в команде sed нет возможности использовать жесткий разделитель кода
. Вот мой пример файла
aggressive_cleanup_wrapper_M3
aggressive_cleanup_wrapper_M5
aggressive_cleanup_wrapper_others
aggressive_cleanup_wrapper_R720
ARCHIVE-REQUEST - Approval Pending
ARCHIVE-REQUEST - Archive
ARCHIVE-REQUEST - Lock Period
ARCHIVE-REQUEST - New
ARCHIVE-REQUEST - rss_master
Как я могу изменить свойКоманда sed для работы с остальной частью моего кода?Может кто-нибудь предложить, пожалуйста?