Сделайте полный поток работы над сценарием bash - PullRequest
1 голос
/ 05 января 2010

Я пытаюсь автоматизировать процесс, который мне приходится делать снова и снова, в котором я должен анализировать выходные данные функции оболочки, искать 5 разных вещей и затем помещать их в файл

Я знаю, что могу сопоставлять шаблоны с grep, однако я не знаю, как сохранить результат в переменной, чтобы использовать его после :( Я также должен проанализировать тот же самый вывод, чтобы получить другие 5 значений

Я понятия не имею, как использовать один и тот же вывод для 5 grep, которые мне нужно сделать, и затем сохранить его для 5 различных переменных для использования

Я знаю, что мне нужно создать красивый и аккуратный .sh, но я не знаю, как это сделать

В настоящее время я пытаюсь это

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

не работает, есть идеи?

Ответы [ 5 ]

3 голосов
/ 05 января 2010

Вы должны показать несколько примеров того, что вы хотите сделать в следующий раз.

при условии, что ваша функция оболочки называется 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
1 голос
/ 05 января 2010

Ваша вторая строка неверна. Измените это на это:

lol=$(echo "$data"|grep red)
1 голос
/ 05 января 2010

Самое простое, что можно сделать - перенаправить вывод функции в файл. После этого вы можете запустить несколько команд greps и удалить файл только после того, как закончите.

Чтобы сохранить вывод, вы хотите использовать подстановку команд. Это запускает команду и затем преобразует вывод в параметр командной строки. В сочетании с присвоением переменной вы получаете:

variable=$(grep expression file)
1 голос
/ 05 января 2010

Вы можете использовать следующий синтаксис:

VAR=$(grep foo bar)

или альтернативно:

VAR=`grep foo bar`
0 голосов
/ 06 января 2010

используйте egrep вместо grep.

переменная = $ (файл egrep "exp1 | exp2 | exp3 | exp4 | exp5")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...