Jquery как шаблоны для форматирования строк в bash

Это должно получить то, что вы хотите, я думаю:

grep -vE '10\.20\.30\.(1|..?,|200)
' <<\IN
10.20.30.150,20
10.20.30.134,20
10.20.30.201,20
10.20.30.5,20
10.20.30.250,20
10.20.30.42,20
222.233.201.5,20
10.233.201.5,20
111.233.201.5,20
IN

в основном вам просто нужно исключить любой матч на 10.20.30 с финальным октомным восьем менее трех символов, что начинается с 1 или это полностью 200.

Вышеуказанные отпечатки:

10.20.30.201,20
10.20.30.250,20
222.233.201.5,20
10.233.201.5,20
111.233.201.5,20
0
08.06.2015, 11:52
1 ответ

Bash, по-видимому, имеет поддержку ассоциативного массива, но я не рекомендую использовать его, потому что нет простого способа пройти его на функцию в качестве аргумента. Вместо этого этот скрипт определяет пары клавиш / значение, переплетенные в простом массиве и пропустите их в формате () в виде порядковых параметров.

#!/bin/bash

format() (
        T="$1"
        shift
        while test $# -ge 2; do
                eval "$1"'=$(echo "$2")'
                shift 2
        done
        eval "cat <<END_OF_TEMPLATE
$T
END_OF_TEMPLATE"
)

read -r -d '' templateStr <<'EOF'
<style type='text/css'>
${cssContent}
</style><!---${cssFileName}--->
EOF

assocArr=(
  cssFileName "abc.css"
  cssContent  $'.abc {\n  display: none;\n}\n'
)

format "$templateStr" "${assocArr[@]}"

Выход:

$ bash format.sh 
<style type='text/css'>
.abc {
  display: none;
}
</style><!---abc.css--->

Обратите внимание, что $ templatestr не может содержать строку End_of_template .

0
28.01.2020, 04:56

Теги

Похожие вопросы