как получить конкретную строку из массива строк - PullRequest
0 голосов
/ 25 января 2019
/server/fmw/idm_111/opatch2019-01-25_08-20-55AM_1.log 
/server/fmw/oamwebgate11g/opatch2019-01-25_08-20-57AM_1.log 
/server/fmw/ohs_111/opatch2019-01-25_08-20-59AM_1.log 
/server/fmw/oracle_common/opatch2019-01-25_08-21-01AM_1.log

выше - содержимое массива строк в оболочке, хотите получить строку с ohs_111

Ответы [ 3 ]

0 голосов
/ 25 января 2019

см. Пример ниже:

#! /usr/bin/env bash
array=("hi...." "..foo/.." "..bar/..")
for i in ${array[@]}; do
    if [[ "$i" =~ "foo" ]] ; then
        echo "$i"
    fi
done

вывод:

..foo/..
0 голосов
/ 25 января 2019

grep - печатать строки, соответствующие шаблону.

Например:

grep -F ohs_111 file_with_content

Также в сценарии можно использовать grep:

#! /usr/bin/env bash

array=("/server/fmw/idm_111/opatch2019-01-25_08-20-55AM_1.log"
    "/server/fmw/oamwebgate11g/opatch2019-01-25_08-20-57AM_1.log"
    "/server/fmw/ohs_111/opatch2019-01-25_08-20-59AM_1.log"
    "/server/fmw/oracle_common/opatch2019-01-25_08-21-01AM_1.log")

for line in ${array[@]}; do
    grep ohs_111 <<< $line
done

Вывод:

/server/fmw/ohs_111/opatch2019-01-25_08-20-59AM_1.log
0 голосов
/ 25 января 2019

, как объяснено в Как проверить, содержит ли строка подстроку в Bash , например:

#!/bin/bash

array=("/server/fmw/idm_111/opatch2019-01-25_08-20-55AM_1.log" 
       "/server/fmw/oamwebgate11g/opatch2019-01-25_08-20-57AM_1.log" 
       "/server/fmw/ohs_111/opatch2019-01-25_08-20-59AM_1.log"
       "/server/fmw/oracle_common/opatch2019-01-25_08-21-01AM_1.log" )

for i in ${!array[*]}
do
  if [[ "${array[$i]}" == *"ohs_111"* ]]
  then
    echo "${array[$i]}"
  fi
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...