【问题标题】:Do a complete flux of work on bash script对 bash 脚本进行全面的工作
【发布时间】:2010-01-05 08:01:27
【问题描述】:

我正在尝试自动化一个我必须一遍又一遍地做的过程,我必须解析一个 shell 函数的输出,寻找 5 个不同的东西,然后把它们放在一个文件中

我知道我可以使用 grep 匹配模式,但是我不知道如何将结果存储在变量中,以便我可以在之后使用它:( 我还必须解析这个相同的输出以获取其他 5 个值

我不知道如何为我需要做的 5 个 grep 使用相同的输出,然后将其存储到 5 个不同的变量中以备后用

我知道我必须创建一个漂亮整洁的 .sh,但我不知道该怎么做

目前正在尝试这个

#!/bin/bash 
data=$(cat file) 
lol=$(echo data|grep red) 
echo $lol 

不工作,有什么想法吗?

【问题讨论】:

    标签: linux bash unix shell terminal


    【解决方案1】:

    你应该展示一些你下次想做什么的例子..

    假设你的 shell 函数被称为 func1

    func1(){
      echo "things i want to get are here"
    }
    
    func1 | grep -E "things|want|are|here|get" > outputfile.txt
    

    更新:

    你的代码

    #!/bin/bash 
    data=$(cat file) 
    lol=$(echo data|grep red) 
    echo $lol 
    

    实际上就是这个意思

    lol=$(grep "red" file)
    

    lol=$(awk '/red/' file)
    

    另外,如果您正在考虑使用 bash,这是您可以做到的一种方法

    while read -r myline
    do 
        case "$myline" in
          *"red"* ) echo "$myline" >> output.txt
        esac
    done <file
    

    【讨论】:

      【解决方案2】:

      您可以使用以下语法:

      VAR=$(grep foo bar)
      

      或者:

      VAR=`grep foo bar`
      

      【讨论】:

      • 我可以在另一个 var 上调用 grep 吗?比如 VAR=$(grep foo bar) VAR2=$(VAR | grep other bar) ?
      • 不,但是您可以对变量使用正则表达式匹配,或者(对我来说不太好)将变量写入文件并对其进行 grep。
      • 否,但您可以回显该 var 并 grep 回显的输出:VAR2=$(echo $VAR|grep other)。注意$VAR
      【解决方案3】:

      最简单的做法是将函数的输出重定向到文件。然后,您可以对其运行多个 grep,并且只有在完成后才删除该文件。

      要保存输出,您需要使用命令替换。这会运行一个命令,然后将输出转换为命令行参数。结合变量赋值,你得到:

      variable=$(grep expression file)
      

      【讨论】:

        【解决方案4】:

        你的第二行是错误的。改成这样:

        lol=$(echo "$data"|grep red)
        

        【讨论】:

          【解决方案5】:

          使用 egrep 代替 grep。

          变量=$(egrep "exp1|exp2|exp3|exp4|exp5" 文件)

          【讨论】:

          • grep 允许使用“\|”的析取表达式分开替代品。 fgrep 有固定的字符串。
          猜你喜欢
          • 2014-05-16
          • 1970-01-01
          • 2012-10-15
          • 2021-10-28
          • 1970-01-01
          • 2020-02-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多