通过shell脚本更改文本文件中的路径地址

时间:2014-12-20 22:59:16

标签: linux bash shell sed

在我的Bash脚本中,我必须在文本文件中将名称更改为路径地址(新地址): (MYADDREES)更改为(/home/run1/c1)并将其另存为新文件。

我确实喜欢这样:定义了一个新变量=新地址,并尝试将其替换为文本文件中的先前地址。

我使用sed但它有问题。

我的剧本是:

#!/bin/bash
# To debug
set -x
x=`pwd`
echo $x
sed "s/MYADDRESS/$x/g" < sample1.txt > new.txt
exit

1 个答案:

答案 0 :(得分:2)

pwd的输出可能包含/个字符,使您的sed表达式看起来像s/MYADDRESS//home/user/somewhere/。这使得sed无法理清什么应该被替换。有两种解决方案:

为sed:

使用不同的分隔符
sed "s,MYADDRESS,$x,g" < sample1.txt > new.txt

...如果当前路径包含逗号字符或sed的特殊字符,则会出现同样的问题,因此更强大的方法是改为使用awk

awk -v curdir="$(pwd)" '{ gsub("MYADDRESS", curdir); print }' < sample1.txt > new.txt