如何在sed中的变量中添加\ r \ n?

时间:2011-08-01 07:22:34

标签: bash sed

简单的问题。 当我使用sed将\r\n添加到变量中时 它失败。 如何添加\r\n

dateRecent=$(sed 's| 年| 年'"\r\n"'|g' <<< $newsDate)
dateRecent=$(sed 's| 年| 年\r\n|g' <<< $newsDate)

sed:-e表达式#1,字符146:未终止的's'命令

整个代码在这里:

cp /var/www/html/INFOSEC/textonly/sc_chi/anti/recent.html /var/www/html/INFOSEC/textonly/sc_chi/anti/recent.test.html


echo "Please input Date in this format(eg.2011 年 7 月 8 日):"
read -e newsDate
echo "Please input Title:"
read -e title
echo "Please input Description:"
read -e desc
echo "Please input ID(eg.d071101):"
read -e id
echo "Please input reference website:"
read -e web
echo "Confirm? Have to do it all over again if wrong (Yes:y, No:n)"
read -e confirm


dateRecent=$newsDate

if [[ "$mail" == "y" ]]; then
        dateRecent=$(sed -e 's/ 年/ 年\r\n/g' <<< $newsDate)
fi
#Add Phishing attack in recent.html
sed -i '0,/<li>/ { s/<li>/<li><a href="'"$web"'" target="_blank">'"$dateRecent"' - '"$title"'<\/a><\/li>\r\n                              <li>/ }' /var/www/html/INFOSEC/textonly/sc_chi/anti/recent.test.html

1 个答案:

答案 0 :(得分:1)

Ppl无法重新创建。所以它可能取决于sed版本。 新的gnused应该像评论报告中的一些一样处理\ r \ n。

较旧的gnused和其他sed可能需要原始换行符并返回重新生成。因此,您可以使用echo来获取它并忽略sed impplementions,但这会给你的shell带来另一种依赖。

# ksh is my suggested standard style: 
sed "s/ 年/ 年`echo -e \\\r\\\n`/g"
# zsh is like ksh and you can omit the -e for echo

# Old bash?: 
sed 's/ 年'"/ 年`echo \\\r\\\n`/g"

Windows很简单,只假设双引号GNUSed。

sed "s/ 年/ 年\r\n/g"

了解AIX下的生活是多么痛苦......