sed:默认替换\ n

时间:2014-01-10 08:50:43

标签: regex bash shell sed

我有一个文件,其中一部分是我在shell脚本中变成一个变量。在这个变量中,我试图通过sed替换部分字符串。但它也在某种程度上取代了“换行”。

这是脚本

#!/bin/bash

str=$(grep "my_stat" $1)

str=$(echo $str | sed -e "s/x/\./g")

echo "$str"

grep之后我的str看起来像这样:

mystatx1x2x3 10 
mystatx3x4x5 20
mystatx4x4x1 100

但在将“x”替换为“。”之后。它正在变成这样:

mystats.1.2.3 10 mystat.3.4.5 20 mystat.4.4.1 100

任何想法为什么会这样发生?

感谢。

2 个答案:

答案 0 :(得分:1)

替换

str=$(echo $str | sed -e "s/x/\./g")

str=$(echo "$str" | sed -e "s/x/\./g")

,而不是grep,而不是sed,你可以说

sed -n '/mystat/s/x/\./gp' $1

答案 1 :(得分:0)

一次性更换

sed -e '/my_stat/s/x/\./g' file