javaluo 发表于 2011-6-9 20:29:10

【已搞定】问一个sed命令替换字符,关于手动输入变量

方法写最上面了


#!/bin/bash
read -p "(shu ru ni de xin xi):" b
sed -i "s/33.33.33.33/$b/g" /root/s.txt
结果 把s.txt的3333换成了输入的东西
首先要求用户手动输入三个变量
$a
$b
$c
然后把xx.txt文件的1111换成变量1
2222换成变量2
3333变成变量3
我这样写 怎么替换成了$a $b $c难道不支持这中变量?
read -p "(enter a a):" a
read -p "(enter a b):" b
read -p "(enter a c):" c
sed -i 's/1111/$a/g' /root/s.txt
sed -i 's/2222/$b/g' /root/s.txt
sed -i 's/3333/$c/g' /root/s.txt

他竟然把1111替换成了$a这个字符 而不是我输入的$a的实际内容



刚才尝试了双引号

#!/bin/bash
echo "input b"
read b
sed "s/33.33.33.33/$b/g" s.txt

结果屏幕上显示修改对了 33确实变成了输入的那个b
但是下载s.txt一看却没有变化。不知道何情况

[ 本帖最后由 javaluo 于 2011-6-9 21:14 编辑 ]

老刘 发表于 2011-6-9 20:36:59

等高手吧.或者你可以试试 awk

hepac 发表于 2011-6-9 20:38:56

单引号内不替换变量

yumeijie 发表于 2011-6-9 20:40:51

菜鸟路过。。。

jasontse 发表于 2011-6-9 20:43:07

单引号里的变量不会被识别

javaluo 发表于 2011-6-9 20:54:42

刚才尝试了双引号

#!/bin/bash
echo "input b"
read b
sed "s/33.33.33.33/$b/g" s.txt

结果屏幕上显示修改对了 33确实变成了输入的那个b
但是下载s.txt一看却没有变化。不知道何情况

foxconndmd 发表于 2011-6-9 21:00:49

原帖由 hepac 于 2011-6-9 20:38 发表
back.gif

单引号内不替换变量

neverno 发表于 2011-6-9 21:13:27

这个也不太懂,等待高手解答

javaluo 发表于 2011-6-9 21:14:29

已搞定

有个就好javaluo 发表于 2011-6-9 21:15:10

#!/bin/bash
read -p "(shu ru ni de xin xi):" b
sed -i ‘s/33.33.33.33/’$b‘/g’ /root/s.txtls你是在复制么
hug.gif
页: [1] 2
查看完整版本: 【已搞定】问一个sed命令替换字符,关于手动输入变量