我有一个文件,其中一部分是我在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
任何想法为什么会这样发生?
感谢。
答案 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