sed:-e 表达式 #1,字符 24:未终止的“s”命令

sed:-e 表达式 #1,字符 24:未终止的“s”命令

使用sed我需要替换 HTML 文档中的变量。

以下是我正在使用的:

cat $email_temp\
 | sed 's/\$message_entry/Flex File Export completed successfully for'"$run_date"'./g'\
 | sed 's/\$run_date/'"$run_date"'/g'\
 | sed 's/\$flex_file_new_count/\'"$flex_file_new_count"'/g'\
 | sed 's/\$exported_file_count/'"$exported_file_count"'/g'\
 | sed 's/\$date_data/\'"$date_data"'/g'\
 | sed 's/\$flex_file_old_count_data/\'"$flex_file_old_count_data"'/g' > $email_body

答案1

正如评论中指出的@unxnut,您的命令中有三个转义的单引号,\'不应转义。因此sed无法找到匹配的结束单引号并失败。

试试这个(使用带引号的变量$email_temp$email_body一次sed调用):

sed -e 's/\$message_entry/Flex File Export completed successfully for'"$run_date"'./g'\
 -e 's/\$run_date/'"$run_date"'/g'\
 -e 's/\$flex_file_new_count/'"$flex_file_new_count"'/g'\
 -e 's/\$exported_file_count/'"$exported_file_count"'/g'\
 -e 's/\$date_data/'"$date_data"'/g'\
 -e 's/\$flex_file_old_count_data/'"$flex_file_old_count_data"'/g' "$email_temp" > "$email_body"

相关内容