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

时间:2011-08-01 08:51:38

标签: bash sed

我终于找出了问题的原因 该代码适用于dateRecent='2011 年\r\n 7 月 25 日'

#!/bin/bash
cp /var/www/html/INFOSEC/textonly/sc_chi/anti/recent.html /var/www/html/INFOSEC/textonly/sc_chi/anti/recent.test.html


dateRecent='2011 年\r\n 7 月 25 日'
title=test
web=http:a.com

#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

但是,dateRecent是一个变量和用户输入,我不能手动添加''引用。

#!/bin/bash
cp /var/www/html/INFOSEC/textonly/sc_chi/anti/recent.html /var/www/html/INFOSEC/textonly/sc_chi/anti/recent.test.html

echo "enter date"
read -e date <== it should be something like 2011 年 7 月 25 日
dateRecent=$(sed 's/ 年/ 年\r\n/g' <<< $date)
title=test
web=http:a.com

#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

所以,我尝试了dateRecent='$dateRecent''"'$dateRecent'"' 但它只是不起作用,谢谢

我也发现,如果回显dateRecent

#!/bin/bash
cp /var/www/html/INFOSEC/textonly/sc_chi/anti/recent.html /var/www/html/INFOSEC/textonly/sc_chi/anti/recent.test.html

echo "enter date"
read -e date
dateRecent=$(sed 's/ 年/ 年\r\n/g' <<< $date)
echo $dateRecent
dateRecent='$dateRecent'
echo $dateRecent
title=test
web=http:a.com

#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

输入是2011年7月25日,但输出将是:

 7 月 25 日
$dateRecent

1 个答案:

答案 0 :(得分:0)

你试过这个吗?

...
dateRecent=$(sed 's/ 年/ 年\r\n/g' <<< $date)
dateRecent="\"$dateRecent\""
...