PlaceHoldersというテンプレート設定ファイルがあります。これらのすべてのPlaceHoldersを探して配列に配置したいと思います。bash:ファイル内のすべての正規表現を見つけて配列に入れよう
海流状態:
私はラインでなし以上プレースホルダがある場合にのみ、ファイル内のすべてのプレースホルダを見つけることができます。たとえばでは、これは私のテンプレートファイル
をされています
matches_bloc=$(awk 'match($0, /(\{\{)([^{]*)(\}\})/) {
print substr($0, RSTART, RLENGTH)
}' ${currFile})
# convert 'matches_bloc' into array
matches=()
echo "Matches:"
while read -r line; do
matches+=("$line")
echo " - ${line}"
done <<< "$matches_bloc"
この例では一致した結果は次のようになります。
upstream portal {
server {{UNICORN_SERVICE_NAME}}:{{UNICORN_SERVICE_PORT}};
}
server {
listen *:80 default_server;
server_name {{APP_HOST}};
server_tokens off;
root /dev/null;
# Increase this if you want to upload large attachments
# Or if you want to accept large git objects over http
client_max_body_size {{NGINX_MAX_UPLOAD_SIZE}};
location {{GITLAB_RELATIVE_URL_ROOT}}/ {
root /var/lib/nginx/portal;
# serve static files from defined root folder;.
# @gitlab is a named location for the upstream fallback, see below
}
}
これは私がプレースホルダを見つけるために使用するコードです:
ファイル5つのプレースホルダがあることに気づくことができ一致:
- {{UNICORN_SERVICE_NAME}}
- {{APP_HOST}}
- {{NGINX_MAX_UPLOAD_SIZE}}
- {{GITLAB_RELATIVE_URL_ROOT}}
と一致するのは4つだけです。
一致しない一致は、同じ行にもう1つの一致があるため、{{UNICORN_SERVICE_PORT}}です。
私の質問は:
どのように私は関係なく、行のファイル内のすべての一致を見つけることができますか?
おかげで男を!偉大な作品とシンプルな私のソリューションを一致 – Evya2005
良いコードのcyrusありがとう、正規表現の部分を説明してください、あなたに感謝するでしょう。 – RavinderSingh13
@ RavinderSingh13:答えを更新しました。 – Cyrus