我正在尝试在一个文件夹中的文件中查找和替换字符串。
有人可以帮帮我吗?
我的脚本如下:
#!/bin/bash
OLD="This is a"
NEW="I am a"
DPATH="/home/user/test/*.txt"
BPATH="/home/user/test/backup/foo"
[ ! -d $BPATH ] && mkdir -p $BPATH || :
for f in $DPATH
do
if [ -f $f -a -r $f ]; then
/bin/cp -f $f $BPATH
sed "s/$OLD/$NEW/g" "$f"
else
echo "Error: Cannot read $f"
fi
done
现在似乎找到了字符串'This is a'并将其替换为'I am a',但这只会在屏幕上打印出来。
我需要它在文件中进行替换。
谢谢
-i
选项并不是完全可移植的,虽然在大多数平台上都以某种形式支持。在*BSD(包括MacOS)上,您需要使用-i''
;如果您根本没有sed -i
,可以尝试使用perl -pi -e
,其中一个简单的sed
脚本可以直接在Perl中使用,但请注意正则表达式方言的差异(您主要需要了解如何在某些地方添加或删除反斜杠)。 - tripleee