【问题标题】:Execute shell command line by line from a file从文件中逐行执行shell命令行
【发布时间】:2016-07-21 10:05:57
【问题描述】:

我有一个 .txt 文件,其中每行都有 sed 替换命令,并且有 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 

【问题讨论】:

  • 向文件chmod +x file添加执行权限,添加bash解释器#!/bin/bash(可选但推荐)并以./file运行
  • 对不起,你能不能让它更容易理解
  • @Inian 使 #!/bin/sh - 你不知道 OP 系统上是否有 bash。并非所有世界都是 Linux 系统。
  • sh my-txt-file 呢?

标签: shell sed


【解决方案1】:

您可以通过删除所有出现的sed -i '' ./db.sql 将文件转换为替换命令列表。

使用process substitution,然后可以将列表作为传递给 sed -f 选项的文件进行处理。

sed -i -f <(sed "s/[^']*'//;s/'.*//" file) ./db.sql

【讨论】:

    【解决方案2】:

    也许这个有帮助:

    for i in $(cat yourfile.txt)
    do
        sudo $i
    done
    

    编辑:

    为什么要投反对票?

    您的问题有多种解决方案。

    解决方案 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
    

    希望这会有所帮助。

    【讨论】:

    • 只在 shell 窗口上运行这个?
    • 不,这是运行 .txt 文件中每个命令的循环。我假设您不想以任何方式编辑 .txt 文件。要实现您正在寻找的内容,您应该创建一个包含此循环的脚本。然后执行这个脚本。如果您需要更多解释,请告诉我:)
    • 如何创建脚本
    • 解决方案1没有给出这样的文件或目录:(
    • 你和你的 .txt 文件在同一个目录吗?
    【解决方案3】:

    您可以通过添加将文件变成脚本

    #!/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 
    

    【讨论】:

    • 参数应该在每一行中?
    • @Melvin:这不重要,但他们可以。以这种方式格式化脚本可能更容易。
    猜你喜欢
    • 2011-06-15
    • 1970-01-01
    • 2014-04-21
    • 2014-01-22
    • 2011-03-04
    • 2013-08-25
    • 1970-01-01
    相关资源
    最近更新 更多