我必须最多启动sed
三次,因为单词startpilot
每行可以出现多次。我认为这个脚本可以编写得更好,也许任何人都可以帮助我优化它。
grep -rl "startpilot" ./* -R | xargs sed -i '' "s/startpilot/${PWD##*/}/"
#! /bin/bash
DIR="$1"
if [ $# -ne 1 ]
then
echo "Usage: $0 {new extension key}"
exit 1
fi
if [ -d "$DIR" ]
then
echo "Directory/extension '$DIR' exists already!"
else
git clone https://github.com/misterboe/startpilot.git $DIR --depth=1
echo "$DIR created."
cd $DIR && rm -rf .git && grep -rl "startpilot" ./* -R | xargs sed -i '' "s/startpilot/${PWD##*/}/" && grep -rl "startpilot" ./* -R | xargs sed -i '' "s/startpilot/${PWD##*/}/" && grep -rl "startpilot" ./* -R | xargs sed -i '' "s/startpilot/${PWD##*/}/" && grep -rl "Startpilot" ./* -R | xargs sed -i '' "s/Startpilot/${PWD##*/}/"
cd Resources/Public/ && bower install
echo "Your extension is now in $DIR."
fi
答案 0 :(得分:2)
如果要替换所有出现的" startpilot"使用${PWD##*/}
,只需将g
(全局)修饰符添加到sed命令:
sed -i '' "s/startpilot/${PWD##*/}/g"
^ here
现在它将取代所有这些,而不是替换该行上的第一个匹配项。