我有一个.txt文件,每行都有sed replace命令,并且有1000多个条目。该文件在我的服务器上。 任何人都可以帮我如何在文件中逐行运行命令并执行到文件末尾。
我的txt文件看起来像
sed -i 's|http://www.myoldsite/url/category/another/blah|http://www.mynewsite.com|g' ./db.sql
sed -i 's|http://www.myoldsite/url/category/blah/blah|http://www.mynewsite.com|g' ./db.sql
sed -i 's|http://www.myoldsite/url/category/blah|http://www.mynewsite.com|g' ./db.sql
答案 0 :(得分:1)
您可以通过删除所有sed -i '
和' ./db.sql
来将您的文件转换为替换命令列表。
使用process substitution,然后可以将列表作为传递给sed -f
选项的文件进行处理。
sed -i -f <(sed "s/[^']*'//;s/'.*//" file) ./db.sql
答案 1 :(得分:-1)
也许这个有帮助:
for i in $(cat yourfile.txt)
do
sudo $i
done
修改强>
为什么选择downvote?
您的问题有多种解决方案。
解决方案1
在.txt文件中运行每个命令:
通过发出命令使您的.txt文件可执行:
chmod +x yourfile.txt
然后通过发出命令执行它:
./yourfile.txt
解决方案2
创建脚本
#!/bin/sh
FILE=$1
while read line; do
$line
done < $FILE
使脚本可执行:
chmod +x yourscriptfile.sh
然后通过提供.txt文件作为参数来执行脚本:
./yourscriptfile.sh yourfilewithcommands.txt
希望这有帮助。
答案 2 :(得分:-1)
您可以通过添加
将文件转换为脚本#!/bin/sh
作为第一行,而不是使文件可执行
chomd u+x file
然后用
运行它./file
但是,这将非常缓慢。使用所有表达式只运行一次sed
要快得多,即将其更改为
sed -i~ 's|http://www.myoldsite/url/category/another/blah|http://www.mynewsite.com|g;
s|http://www.myoldsite/url/category/blah/blah|http://www.mynewsite.com|g;
s|http://www.myoldsite/url/category/blah|http://www.mynewsite.com|g
' ./db.sql