sed + awk + проверить строку в файле - PullRequest
0 голосов
/ 22 июля 2010

У меня есть следующий файл примера

    /etc/sysconfig/network/script.sh = -exe $Builder
    run_installation 123 44 556 4 = run_installation arg1 arg2 arg3 948
    EXE=somthing
    EXE somthing

У меня три вопроса (я пишу bash script)

  1. как проверить с помощью sed или awk, если строка "-exe""существовать после символа" = "
  2. как проверить с помощью sed или awk, существует ли строка run_installation в первой строке (первое слово в строке) и после символа" = "какПример ниже (файл)

  3. строка EXE в файле может быть "EXE" или как "EXE =", как удалить с помощью sed EXE или EXE =

    Я делаю:

    sed s'/EXE//g' | sed s'/EXE=//g'
    

    но это не очень хороший способ сделать в моем bash-скрипте

• Мне нужны три разных ответа!

Лидия

1 Ответ

0 голосов
/ 22 июля 2010

вы не дали дальнейших критериев, что делать, если условия 1 и 2 не найдены ...

awk '/=.*-exe/{f=1;}
/^run_installation.*=.*run_installation/{g=1}
/^EXE/{ gsub(/EXE=|EXE/,"") }
f && g{ print "ok" ;exit }
' file

Приведенный выше код проверяет условие 1 и условие 2 и выдает «ok», когда оба найдены. Замена EXE для условия 3 добавлена ​​в целях иллюстрации. Укажите более четко, что вы хотите сделать, и покажите ожидаемый результат в следующий раз

Для проверки их отдельно,

awk '/= -exe/{print "found"}' file
awk '/^run_installation.*=.*run_installation/{print "found"}' file
...