jqの使い方

イシュー

  • json編集にjqが使える

参考

describe から、define-index-fieldのawsコマンドをつくるjqコマンド

FRDNAME="from-domain-name"
TODNAME="to-domain-name"

aws cloudsearch describe-index-fields --domain-name ${FRDNAME} --profile ${PROFILE} |jq '.IndexFields[].Options|if .IndexFieldType == "int" then @text "aws cloudsearch define-index-field --domain-name __REP_DOMAIN__ --name \(.IndexFieldName) --type \(.IndexFieldType) --facet-enabled \(.IntOptions.FacetEnabled) --sort-enabled \(.IntOptions.SortEnabled) --search-enabled \(.IntOptions.SearchEnabled) --return-enabled \(.IntOptions.ReturnEnabled)" elif .IndexFieldType == "double" then @text "aws cloudsearch define-index-field --domain-name __REP_DOMAIN__ --name \(.IndexFieldName) --type \(.IndexFieldType) --facet-enabled \(.DoubleOptions.FacetEnabled) --sort-enabled \(.DoubleOptions.SortEnabled) --search-enabled \(.DoubleOptions.SearchEnabled) --return-enabled \(.DoubleOptions.ReturnEnabled)" elif .IndexFieldType == "literal" then @text "aws cloudsearch define-index-field --domain-name __REP_DOMAIN__ --name \(.IndexFieldName) --type \(.IndexFieldType) --facet-enabled \(.LiteralOptions.FacetEnabled) --sort-enabled \(.LiteralOptions.SortEnabled) --search-enabled \(.LiteralOptions.SearchEnabled) --return-enabled \(.LiteralOptions.ReturnEnabled)" elif .IndexFieldType == "text" then @text "aws cloudsearch define-index-field --domain-name __REP_DOMAIN__ --name \(.IndexFieldName) --type \(.IndexFieldType) --highlight-enabled \(.TextOptions.HighlightEnabled) --return-enabled \(.TextOptions.ReturnEnabled) --sort-enabled \(.TextOptions.SortEnabled) --analysis-scheme \(.TextOptions.AnalysisScheme)" elif .IndexFieldType == "date" then @text "aws cloudsearch define-index-field --domain-name __REP_DOMAIN__ --name \(.IndexFieldName) --type \(.IndexFieldType) --facet-enabled \(.DateOptions.FacetEnabled) --sort-enabled \(.DateOptions.SortEnabled) --search-enabled \(.DateOptions.SearchEnabled) --return-enabled \(.DateOptions.ReturnEnabled)" elif .IndexFieldType == "latlon" then @text "aws cloudsearch define-index-field --domain-name __REP_DOMAIN__ --name \(.IndexFieldName) --type \(.IndexFieldType) --facet-enabled \(.LatLonOptions.FacetEnabled) --sort-enabled \(.LatLonOptions.SortEnabled) --search-enabled \(.LatLonOptions.SearchEnabled) --return-enabled \(.LatLonOptions.ReturnEnabled)" else "OTHER!!!" end' |sed 's/"//g' |sed "s/__REP_DOMAIN__/${TODNAME}/g" > createIndex.sh