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



在我的 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

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

最新更新