ããã¯ãUbuntu OnlineãFedora OnlineãWindowsãªã³ã©ã€ã³ãšãã¥ã¬ãŒã¿ãŒãMACOSãªã³ã©ã€ã³ãšãã¥ã¬ãŒã¿ãŒãªã©ã®è€æ°ã®ç¡æãªã³ã©ã€ã³ã¯ãŒã¯ã¹ããŒã·ã§ã³ã®XNUMXã€ã䜿çšããŠOnWorksç¡æãã¹ãã£ã³ã°ãããã€ããŒã§å®è¡ã§ããã³ãã³ãjqã§ãã
ããã°ã©ã ïŒ
NAME
jq -ã³ãã³ãã©ã€ã³JSONããã»ããµ
SYNOPSIS
jq [ãªãã·ã§ã³...] filter [ãã¡ã€ã«...]
jq éžæãå埩ãåæžãªã©ãããŸããŸãªæ¹æ³ã§JSONãå€æã§ããŸã
JSONããã¥ã¡ã³ãã®ãã³ã°ãªã³ã°ã ããšãã°ãã³ãã³ããå®è¡ããŸã jq ÂŽmapïŒ.priceïŒ | è¿œå æå¿
JSONãªããžã§ã¯ãã®é åãå ¥åãšããŠåãåãããããã®ãäŸ¡æ Œããã£ãŒã«ãã®åèšãè¿ããŸãã
jq ããã¹ãå ¥åãåãå ¥ããããšãã§ããŸãããããã©ã«ãã§ã¯ã jq JSONãšã³ãã£ãã£ã®ã¹ããªãŒã ãèªã¿åããŸã
ïŒæ°åããã®ä»ã®ãªãã©ã«ãå«ãïŒãã stdinã 空çœã¯åé¢ããããã«ã®ã¿å¿ èŠã§ã
1ã2ãªã©ã®ãšã³ãã£ãã£ãããã³trueãšfalseã XNUMXã€ä»¥äž ãã¡ã€ã« æå®ããããšãã§ããŸã
å Žå jq 代ããã«ãããããã®å ¥åãèªã¿åããŸãã
ã ãªãã·ã§ã³ ã§èª¬æãããŠããŸã åŒã³åºã JQ ã»ã¯ã·ã§ã³; ãããã¯äž»ã«å ¥åãšåºåã«é¢ä¿ããŸã
ãã©ãŒãããã ã¶ã» filter jqèšèªã§æžãããŠãããå€ææ¹æ³ãæå®ããŸã
å ¥åãã¡ã€ã«ãŸãã¯ããã¥ã¡ã³ãã
FILTERS
jqããã°ã©ã ã¯ããã£ã«ã¿ãŒãã§ããå ¥åãåãåããåºåãçæããŸãã ããããããããŸã
ãªããžã§ã¯ãã®ç¹å®ã®ãã£ãŒã«ããæœåºããããæ°å€ãã«å€æãããããããã®çµã¿èŸŒã¿ãã£ã«ã¿ãŒ
æååããŸãã¯ãã®ä»ã®ããŸããŸãªæšæºã¿ã¹ã¯ã
ãã£ã«ã¿ã¯ããŸããŸãªæ¹æ³ã§çµã¿åãããããšãã§ããŸã-XNUMXã€ã®ãã£ã«ã¿ã®åºåããã€ãã§æ¥ç¶ã§ããŸã
å¥ã®ãã£ã«ã¿ãŒããŸãã¯ãã£ã«ã¿ãŒã®åºåãé åã«åéããŸãã
äžéšã®ãã£ã«ã¿ãŒã¯è€æ°ã®çµæãçæããŸããããšãã°ããã¹ãŠã®ãã£ã«ã¿ãŒãçæãããã£ã«ã¿ãŒããããŸãã
ãã®å ¥åé åã®èŠçŽ ã ãã®ãã£ã«ã¿ãŒãXNUMXçªç®ã«ãã€ããããšãXNUMXçªç®ã®ãã£ã«ã¿ãŒãå®è¡ãããŸãã
é åã®åèŠçŽ ã äžè¬çã«ãã«ãŒããšå埩ã§è¡ãããããš
ä»ã®èšèªã§ã¯ãjqã§ãã£ã«ã¿ãŒãæ¥çããã ãã§å®è¡ã§ããŸãã
ãã¹ãŠã®ãã£ã«ã¿ãŒã«ã¯å ¥åãšåºåãããããšãèŠããŠããããšãéèŠã§ãã ãªãã©ã«ã§ãã
ãhelloãã42ã¯ãã£ã«ã¿ãŒã§ããå ¥åãåãåããŸãããåžžã«åããªãã©ã«ãçæããŸãã
åºåã å ç®ã®ããã«XNUMXã€ã®ãã£ã«ã¿ãŒãçµã¿åãããæäœã¯ãéåžžãåãå ¥åããã£ãŒãããŸã
äž¡æ¹ã«ãçµæãçµã¿åãããŸãã ãããã£ãŠãå¹³ååãã£ã«ã¿ãŒã次ã®ããã«å®è£ ã§ããŸãã å ããŸã / é·ã
-å ¥åé åãäž¡æ¹ã«ãã£ãŒââãããŸã å ããŸã ãã£ã«ã¿ãŒãš é·ã ãã£ã«ã¿ããŠããå®è¡ãã
åè£ã
ããããããã¯ç§ãã¡ããé²ãã§ããŸãã :)ãã£ãšç°¡åãªãã®ããå§ããŸãããïŒ
åŒã³åºã JQ
jqãã£ã«ã¿ãŒã¯JSONããŒã¿ã®ã¹ããªãŒã ã§å®è¡ãããŸãã jqãžã®å ¥åã¯ã次ã®ã·ãŒã±ã³ã¹ãšããŠè§£æãããŸãã
æäŸããããã£ã«ã¿ãŒãXNUMXã€ãã€ééãã空çœã§åºåãããJSONå€
æéã ãã£ã«ã¿ã®åºåã¯ã次ã®ã·ãŒã±ã³ã¹ãšããŠæšæºåºåã«æžã蟌ãŸããŸãã
空çœã§åºåãããJSONããŒã¿ã
泚ïŒã·ã§ã«ã®åŒçšã«ãŒã«ã«æ³šæããããšãéèŠã§ãã ååãšããŠã
jqããã°ã©ã ã¯åžžã«åŒçšç¬Šã§å²ã¿ãŸãïŒäžéåŒçšç¬Šã§å²ã¿ãŸãïŒã
jqã®ç¹å¥ãªæå³ã¯ãã·ã§ã«ã®ã¡ã¿æåã§ããããŸãã äŸãã°ã jq ãããŒã 倱æããŸã
ã»ãšãã©ã®Unixã·ã§ã«ã¯ã jq fooãäžè¬çã«å€±æããŸã
ãªããªã foo is å®çŸ©æžã¿ã®ã Windowsã³ãã³ãã·ã§ã«ïŒcmd.exeïŒã䜿çšããå Žåã¯ã
ã³ãã³ãã©ã€ã³ã§æå®ããå Žåã¯ãjqããã°ã©ã ãäºéåŒçšç¬Šã§å²ã¿ãŸãïŒ -f
ããã°ã©ã ãã¡ã€ã« ãªãã·ã§ã³ïŒããã ããjqããã°ã©ã ã®äºéåŒçšç¬Šã¯åèšå·ããšã¹ã±ãŒãããå¿ èŠããããŸãã
ã³ãã³ãã©ã€ã³ã䜿çšããŠãjqãå ¥åãšåºåãèªã¿æžãããæ¹æ³ã«åœ±é¿ãäžããããšãã§ããŸã
ãªãã·ã§ã³ïŒ
· - ããŒãžã§ã³:
jqããŒãžã§ã³ãåºåãããŒãã§çµäºããŸãã
· --seq:
ã¢ããªã±ãŒã·ã§ã³/ json-seq jqã®å ¥åã§JSONããã¹ããåé¢ããããã®MIMEã¿ã€ãã¹ããŒã
ãšåºåã ããã¯ãASCII RSïŒã¬ã³ãŒãåºåãæåïŒæåãåã«å°å·ãããããšãæå³ããŸã
åºåã®åå€ãšASCIILFïŒæ¹è¡ïŒã¯ããã¹ãŠã®åºåã®åŸã«åºåãããŸãã å ¥å
解æã«å€±æããJSONããã¹ãã¯ç¡èŠããïŒãã ãèŠåãããŸãïŒããã¹ãŠç Žæ£ãããŸã
次ã®RSãŸã§ã®åŸç¶ã®å ¥åã ããã«ãããjqã®åºåã解æãããŸãã
--seq ãªãã·ã§ã³ãéžæããŸãã
· - ã¹ããªãŒã :
ã¹ããªãŒãã³ã°æ¹åŒã§å ¥åã解æãããã¹ãšãªãŒãã®å€ã®é åãåºåããŸã
ïŒã¹ã«ã©ãŒãšç©ºã®é åãŸãã¯ç©ºã®ãªããžã§ã¯ãïŒã äŸãã°ã ããã ã«ãªã [[]ã "a"],
[[]ã "a"ã["b"]] ã«ãªã [[0]ã[]], [[1]ã "a"], [[1,0]ã "b"].
ããã¯ãéåžžã«å€§ããªå ¥åãåŠçããå Žåã«åœ¹ç«ã¡ãŸãã ããããšçµã¿åãããŠäœ¿çšââããŸã
ãã£ã«ã¿ãªã³ã°ãš æžãããŸã & foreach㮠倧ããªå ¥åã段éçã«æžããæ§æã
· - åã/-s:
å ¥åå ã®åJSONãªããžã§ã¯ãã«å¯ŸããŠãã£ã«ã¿ãŒãå®è¡ãã代ããã«ãå ¥åå šäœãèªã¿åããŸã
倧ããªé åã«ã¹ããªãŒãã³ã°ãããã£ã«ã¿ãŒãXNUMXåã ãå®è¡ããŸãã
· --çå ¥å/-R:
å ¥åãJSONãšããŠè§£æããªãã§ãã ããã 代ããã«ãããã¹ãã®åè¡ããã£ã«ã¿ãŒã«æž¡ãããŸãã
ã¹ããªã³ã°ã ãšçµã¿åãããå Žå - åãã次ã«ãå ¥åå šäœããã£ã«ã¿ãŒã«æž¡ãããŸãã
åäžã®é·ãæååã
· --null-å ¥å/-n:
å ¥åããŸã£ããèªãŸãªãã§ãã ããïŒ ä»£ããã«ããã£ã«ã¿ãŒã¯ã䜿çšããŠäžåºŠå®è¡ãããŸã ãã« å ¥åãšããŠã
ããã¯ãjqãåçŽãªèšç®æ©ãšããŠäœ¿çšããå ŽåããŸãã¯ããJSONããŒã¿ãæ§ç¯ããå Žåã«åœ¹ç«ã¡ãŸãã
ã¹ã¯ã©ããã
· --ã³ã³ãã¯ãåºå / -c:
ããã©ã«ãã§ã¯ãjqã¯JSONåºåããããã«å°å·ããŸãã ãã®ãªãã·ã§ã³ã䜿çšãããšãããå€ãã®çµæãåŸãããŸã
代ããã«ãåJSONãªããžã§ã¯ããXNUMXè¡ã«é 眮ããããšã§ã³ã³ãã¯ããªåºåãå®çŸããŸãã
· - ã¿ã:
XNUMXã€ã®ã¹ããŒã¹ã§ã¯ãªããã€ã³ãã³ãã¬ãã«ããšã«ã¿ãã䜿çšããŸãã
· - ã€ã³ãã³ã n:
ã€ã³ãã³ãã«ã¯ãæå®ãããæ°ã®ã¹ããŒã¹ïŒ8以äžïŒã䜿çšããŸãã
· -- è²åºå / -C & -ã¢ãã¯ãåºå / -M:
ããã©ã«ãã§ã¯ãjqã¯ç«¯æ«ã«æžã蟌ãå Žåãè²ä»ãã®JSONãåºåããŸãã ããªãã¯ããã匷å¶ããããšãã§ããŸã
ã䜿çšããŠãã€ãããã¡ã€ã«ã«æžã蟌ãã§ãè²ãçæããŸã -Cãã§è²ãç¡å¹ã«ããŸã -M.
· --ascii-åºå / -a:
jqã¯éåžžãæå®ãããå ¥åã§ãã£ãŠããéASCIIUnicodeã³ãŒããã€ã³ããUTF-8ãšããŠåºåããŸãã
ãããããšã¹ã±ãŒãã·ãŒã±ã³ã¹ãšããŠïŒ "\ u03bc"ãªã©ïŒã ãã®ãªãã·ã§ã³ã䜿çšãããšãjqã匷å¶çã«
ãã¹ãŠã®éASCIIæåãåçã®ãã®ã«çœ®ãæããããçŽç²ãªASCIIåºåãçæããŸã
ãšã¹ã±ãŒãã·ãŒã±ã³ã¹ã
· -ãããã¡ãªã
åJSONãªããžã§ã¯ããå°å·ãããåŸã«åºåããã©ãã·ã¥ããŸãïŒäœéã®ãã€ãã䜿çšããŠããå Žåã«äŸ¿å©ã§ãïŒ
ããŒã¿ãœãŒã¹ãjqã«æ¥ç¶ããjqã®åºåãä»ã®å Žæã«ãã€ãããŸãïŒã
· --ãœãŒãã㌠/ -S:
åãªããžã§ã¯ãã®ãã£ãŒã«ããããœãŒããããé åºã§ããŒãšãšãã«åºåããŸãã
· --çåºå / -r:
ãã®ãªãã·ã§ã³ã䜿çšãããšããã£ã«ã¿ãŒã®çµæãæååã®å ŽåãçŽæ¥æžã蟌ãŸããŸã
åŒçšç¬Šä»ãã®JSONæååãšããŠãã©ãŒããããããã®ã§ã¯ãªããæšæºåºåã«å€æãããŸãã ããã¯ã§ããŸã
jqãã£ã«ã¿ãŒãéJSONããŒã¹ã®ã·ã¹ãã ãšéä¿¡ãããã®ã«åœ¹ç«ã¡ãŸãã
· --çµååºå / -j:
ããã -r ãã ããjqã¯ååºåã®åŸã«æ¹è¡ãåºåããŸããã
· -f ãã¡ã€ã«å / --from-ãã¡ã€ã« ãã¡ã€ã«å:
awkã®-fãªãã·ã§ã³ã®ããã«ãã³ãã³ãã©ã€ã³ããã§ã¯ãªããã¡ã€ã«ãããã£ã«ã¿ãŒãèªã¿åããŸãã å
ÂŽïŒÂŽã䜿çšããŠã³ã¡ã³ãããããšãã§ããŸãã
· -Lãã£ã¬ã¯ã㪠/ -L ãã£ã¬ã¯ããªã«ãžã§ããéå§ããŸãã:
ããªãã³ã ãã£ã¬ã¯ããªã«ãžã§ããéå§ããŸãã ã¢ãžã¥ãŒã«ã®æ€çŽ¢ãªã¹ãã«ç§»åããŸãã ãã®ãªãã·ã§ã³ã䜿çšããå Žåã¯ã
çµã¿èŸŒã¿ã®æ€çŽ¢ãªã¹ãã䜿çšãããŸãã 以äžã®ã¢ãžã¥ãŒã«ã«é¢ããã»ã¯ã·ã§ã³ãåç §ããŠãã ããã
· -e / -çµäºã¹ããŒã¿ã¹:
æåŸã®åºåå€ãã©ã¡ãã§ããªãã£ãå Žåãjqã®çµäºã¹ããŒã¿ã¹ã0ã«èšå®ããŸã false ãŸã ãã«,
æåŸã®åºåå€ãããããã§ãã£ãå Žåã¯1 false or ãã«ããŸãã¯æå¹ãªçµæããªãã£ãå Žåã¯4
çç£ã éåžžã䜿çšäžã®åé¡ãã·ã¹ãã ãšã©ãŒãçºçããå Žåãjqã¯2ã§çµäºããŸãã3
jqããã°ã©ã ã®ã³ã³ãã€ã«ãšã©ãŒãçºçããå Žåã¯0ãjqããã°ã©ã ãå®è¡ãããå Žåã¯XNUMXã
· --arg å å€:
ãã®ãªãã·ã§ã³ã¯ãäºåå®çŸ©ãããå€æ°ãšããŠå€ãjqããã°ã©ã ã«æž¡ããŸãã jqãå®è¡ããå Žå
ã --arg foo ããŒãã¿ãããããã®åŸã $ foo ããã°ã©ã ã§å©çšå¯èœã§ããã䟡å€ããããŸã "ããŒ".
泚æããŠãã ãã å€ æååãšããŠæ±ãããã®ã§ã --arg foo 123 ãã€ã³ãããŸã $ foo ããž "123".
· --argjson å JSONããã¹ã:
ãã®ãªãã·ã§ã³ã¯ãJSONã§ãšã³ã³ãŒããããå€ãäºåå®çŸ©ãããå€æ°ãšããŠjqããã°ã©ã ã«æž¡ããŸãã ããã
jqãå®è¡ããŸã --argjson foo 123ãã¿ãããããã®åŸã $ foo ããã°ã©ã ã§å©çšå¯èœã§ããã
å€ 123.
· --slurpfile å€æ°å ãã¡ã€ã«å:
ãã®ãªãã·ã§ã³ã¯ãæå®ããããã¡ã€ã«å ã®ãã¹ãŠã®JSONããã¹ããèªã¿åããã®é åããã€ã³ãããŸã
æå®ãããã°ããŒãã«å€æ°ã«è§£æãããJSONå€ã jqãå®è¡ããå Žå --argfile foo ããŒ,
ãã®åŸ $ foo ããã°ã©ã ã§å©çšå¯èœã§ãããèŠçŽ ã察å¿ããé åãæã£ãŠããŸã
ååã®ä»ãããã¡ã€ã«å ã®ããã¹ã ããŒ.
· --argfile å€æ°å ãã¡ã€ã«å:
䜿çšçŠæ¢ã ã€ãããŸã --slurpfile ã代ããã«ã䜿ããã ããã
ïŒãã®ãªãã·ã§ã³ã¯æ¬¡ã®ãããªãã®ã§ã --slurpfileããã ãããã¡ã€ã«ã«ããã¹ããXNUMXã€ãããªãå Žåãããã¯
䜿çšãããå Žåããã以å€ã®å Žåã¯ããã¹ãã®é åã次ã®ããã«äœ¿çšãããŸã --slurpfile.)
· -- ãã¹ãã®å®è¡ [ãã¡ã€ã«å]:
æå®ããããã¡ã€ã«ãŸãã¯æšæºå ¥åã§ãã¹ããå®è¡ããŸãã ããã¯äžããããæåŸã®ãªãã·ã§ã³ã§ãªããã°ãªããŸãã
ãŸããåè¿°ã®ãã¹ãŠã®ãªãã·ã§ã³ãå°éããããã§ã¯ãããŸããã å ¥åã¯ã³ã¡ã³ãè¡ã§æ§æããã空ã§ã
è¡ãããã³ããã°ã©ã è¡ãšããã«ç¶ãXNUMXã€ã®å ¥åè¡ãåºåã®è¡ãšåãæ°
æåŸ ãããïŒåºåããšã«XNUMXã€ïŒãããã³çµäºãã空ã®è¡ã ã³ã³ãã€ã«å€±æãã¹ã
ã%% FAILãã®ã¿ãå«ãè¡ã§éå§ãã次ã«ããã°ã©ã ãå«ãè¡ã
ã³ã³ãã€ã«ããŠãããå®éãšæ¯èŒããããã®ãšã©ãŒã¡ãã»ãŒãžãå«ãè¡ã
ãã®ãªãã·ã§ã³ã¯éæ¹åã«å€æŽãããå¯èœæ§ãããããšã«æ³šæããŠãã ãã-äºææ§ããããŸããã
BASIC FILTERS
.
絶察çã«æãåçŽãªïŒãããŠæãèå³ã®ãªãïŒãã£ã«ã¿ãŒã¯ .ã ããã¯ã
å ¥åããåºåãšããŠå€æŽããã«çæããŸãã
jqã¯ããã©ã«ãã§ãã¹ãŠã®åºåããããã«åºåããã®ã§ããã®ç°¡åãªããã°ã©ã ã¯æ¬¡ã®ãããªäŸ¿å©ãªæ¹æ³ã«ãªããŸãã
ããšãã°ãããã®JSONåºåã®ãã©ãŒããã curl.
jqÂŽ.ÂŽ
"ããã«ã¡ã¯äžçïŒ"
=>ãHelloãworldïŒã
.fooã .foo.bar
ãã£ãšãåçŽãª äŸ¿å© ãã£ã«ã¿ãŒã¯ .fooã JSONãªããžã§ã¯ãïŒå¥åèŸæžãŸãã¯ããã·ã¥ïŒã次ã®ããã«æå®ããå Žå
å ¥åã®å ŽåãããŒãfooãã§å€ãçæããŸããååšããªãå Žåã¯nullãçæããŸãã
ããŒã«ç¹æ®æåãå«ãŸããŠããå Žåã¯ã次ã®ããã«äºéåŒçšç¬Šã§å²ãå¿ èŠããããŸãã
ãã®ïŒ ã "foo $".
ãã©ãŒã ã®ãã£ã«ã¿ãŒ .foo.bar ã«çžåœããŸã .foo | .bar.
jqÂŽ.fooÂŽ
{"foo"ïŒ42ã "bar"ïŒ "ããŸãé¢çœããªãããŒã¿"}
=> 42
jqÂŽ.fooÂŽ
{"notfoo"ïŒtrueã "alsonotfoo"ïŒfalse}
=> null
jqÂŽã["foo"] ÂŽ
{"foo"ïŒ42}
=> 42
.fooïŒ
ãšåãããã« .fooããã ãããšã©ãŒãçºçããŠãåºåãããªãå Žå . é åãŸãã¯ãªããžã§ã¯ãã§ã¯ãããŸããã
jqÂŽ.fooïŒ ÂŽ
{"foo"ïŒ42ã "bar"ïŒ "ããŸãé¢çœããªãããŒã¿"}
=> 42
jqÂŽ.fooïŒ ÂŽ
{"notfoo"ïŒtrueã "alsonotfoo"ïŒfalse}
=> null
jqÂŽã["foo"]ïŒ ÂŽ
{"foo"ïŒ42}
=> 42
jqÂŽ [ãfooïŒ] ÂŽ
ã1,2]
=> []
ã[ ]ã ã[2]ã ã[10:15]
次ã®ãããªæ§æã䜿çšããŠããªããžã§ã¯ãã®ãã£ãŒã«ããæ€çŽ¢ããããšãã§ããŸãã ã["foo"] ïŒäžèšã®.fooã¯
ããã®ççž®çïŒã ããŒãæŽæ°ã®å Žåãããã¯é åã§ãæ©èœããŸãã
é åã¯ïŒjavascriptã®ããã«ïŒãŒãããŒã¹ãªã®ã§ã [2] é åã®XNUMXçªç®ã®èŠçŽ ãè¿ããŸãã
ã ã[10:15] æ§æã䜿çšããŠãé åã®ãµãé åãŸãã¯æååã®ãµãæååãè¿ãããšãã§ããŸãã
ã«ãã£ãŠè¿ãããé å ã[10:15] ã€ã³ããã¯ã¹5ã®èŠçŽ ãå«ãé·ã10ã«ãªããŸã
ïŒå æ¬çïŒã€ã³ããã¯ã¹15ïŒæä»çïŒã ã©ã¡ãã®ã€ã³ããã¯ã¹ãè² ã®å€ã«ãªãå¯èœæ§ããããŸãïŒãã®å Žåãã«ãŠã³ããããŸã
é åã®æåŸããéæ¹åã«ïŒããŸãã¯çç¥ãããŸãïŒãã®å Žåãéå§ãŸãã¯
é åã®çµããïŒã
ã [2] æ§æã䜿çšããŠãæå®ãããã€ã³ããã¯ã¹ã®èŠçŽ ãè¿ãããšãã§ããŸãã è² ã®ææ°ã¯
èš±å¯ããã-1ã¯æåŸã®èŠçŽ ãåç §ãã-2ã¯æåŸããXNUMXçªç®ã®èŠçŽ ãåç §ããŸãã
ãªã©ããããŸãã
ã .foo æ§æã¯ãåçŽãªããŒãã€ãŸããã¹ãŠè±æ°åã®ããŒã«å¯ŸããŠã®ã¿æ©èœããŸãã
ã[ ] ã³ãã³ãããããªã©ã®ç¹æ®æåãå«ãããŒã§æ©èœããŸãã ã«ãšã£ãŠ
äŸ ã["foo :: bar"] & ã["foo.bar"] åããªãã .foo :: bar & .foo.bar ããªãã§ãããã
ã ? ãæŒç®åãã¯ã次ã®ããã«ã¹ã©ã€ã¹æŒç®åãšäžç·ã«äœ¿çšããããšãã§ããŸãã ã[10:15]ïŒãåºå
å ¥åãã¹ã©ã€ã¹å¯èœãªå€ã
jqÂŽã[0] ÂŽ
[{"name"ïŒ "JSON"ã "good"ïŒtrue}ã{"name"ïŒ "XML"ã "good"ïŒfalse}]
=> {"name"ïŒ "JSON"ã "good"ïŒtrue}
jqÂŽã[2] ÂŽ
[{"name"ïŒ "JSON"ã "good"ïŒtrue}ã{"name"ïŒ "XML"ã "good"ïŒfalse}]
=> null
jqÂŽã[2ïŒ4] ÂŽ
["a"ã "b"ã "c"ã "d"ã "e"]
=> ["c"ã "d"]
jqÂŽã[2ïŒ4] ÂŽ
ãabcdefghiã
=>ãcdã
jqÂŽã[ïŒ3] ÂŽ
["a"ã "b"ã "c"ã "d"ã "e"]
=> ["a"ã "b"ã "c"]
jqÂŽã[-2ïŒ] ÂŽ
["a"ã "b"ã "c"ã "d"ã "e"]
=> ["d"ã "e"]
jqÂŽã[-2] ÂŽ
ã1,2,3]
=> 2
ã[]
ããªãã䜿çšããŠããå Žå ã[玢åŒ] æ§æã§ãããã€ã³ããã¯ã¹ãå®å šã«çç¥ããå Žåã ã
é åã®èŠçŽ ã ã©ã³ãã³ã° ã[] å ¥å㧠ã1,2,3] æ°åã¯XNUMXã€ã«ãªããŸã
åäžã®é åãšããŠã§ã¯ãªããåå¥ã®çµæã
ããããªããžã§ã¯ãã§äœ¿çšããããšãã§ãããªããžã§ã¯ãã®ãã¹ãŠã®å€ãè¿ããŸãã
jqÂŽã[] ÂŽ
[{"name"ïŒ "JSON"ã "good"ïŒtrue}ã{"name"ïŒ "XML"ã "good"ïŒfalse}]
=> {"name"ïŒ "JSON"ã "good"ïŒtrue}ã{"name"ïŒ "XML"ã "good"ïŒfalse}
jqÂŽã[] ÂŽ
[]
=>
jqÂŽã[] ÂŽ
{"a"ïŒ1ã "b"ïŒ1}
=> 1ã1
ã[]ïŒ
ããã ã[]ããã ããã®å Žåã¯ãšã©ãŒã¯åºåãããŸããã é åãŸãã¯ãªããžã§ã¯ãã§ã¯ãããŸããã
,
XNUMXã€ã®ãã£ã«ã¿ãŒãã³ã³ãã§åºåãããŠããå Žåãå ¥åã¯äž¡æ¹ã«å ¥åãããŸãã
è€æ°ã®åºåã«ãªããŸããæåã«ãå·Šã®åŒã«ãã£ãŠçæããããã¹ãŠã®åºåãããã³
次ã«ãå³ã«ãã£ãŠçæããããã¹ãŠã®åºåã ããšãã°ããã£ã«ã¿ãŒ .fooã ãããŒãçç£ãã
ãfooããã£ãŒã«ããšãbarããã£ãŒã«ãã®äž¡æ¹ãå¥ã ã®åºåãšããŠã
jqÂŽ.fooã.barÂŽ
{"foo"ïŒ42ã "bar"ïŒ "something other"ã "baz"ïŒtrue}
=> 42ããäœãä»ã®ãã®ã
jqÂŽ.userã.projects [] ÂŽ
{"user"ïŒ "stedolan"ã "projects"ïŒ["jq"ã "wikiflow"]}
=> "stedolan"ã "jq"ã "wikiflow"
jqÂŽã[4,2] ÂŽ
["a"ã "b"ã "c"ã "d"ã "e"]
=> "e"ã "c"
|
| ãªãã¬ãŒã¿ãŒã¯ãå·ŠåŽã®ãã£ã«ã¿ãŒã®åºåãã«ãã£ãŒãããããšã«ãããXNUMXã€ã®ãã£ã«ã¿ãŒãçµã¿åãããŸã
å³åŽã®ãã®ã®å ¥åã ããã¯ãUnixã·ã§ã«ã®ãã€ããšã»ãšãã©åãã§ãã
ããªãã¯ããã«æ £ããŠããŸãã
å·ŠåŽã®ãã®ãè€æ°ã®çµæãçæããå Žåãå³åŽã®ãã®ã¯
ãããã®çµæã®ããããã ã ãããåŒ ã[] | .foo ããããã®ãfooããã£ãŒã«ããååŸããŸã
å ¥åé åã®èŠçŽ ã
jqÂŽã[] | ãåå
[{"name"ïŒ "JSON"ã "good"ïŒtrue}ã{"name"ïŒ "XML"ã "good"ïŒfalse}]
=> "JSON"ã "XML"
TYPES ãã㊠VALUES
jqã¯ãJSONãšåãããŒã¿åã®ã»ããïŒæ°å€ãæååãããŒã«å€ãé åã
ãªããžã§ã¯ãïŒJSONã§èšãã°ãæååããŒã®ã¿ã®ããã·ã¥ïŒãããã³ãnullãã
ããŒã«å€ãnullãæååãããã³æ°å€ã¯ãjavascriptãšåãæ¹æ³ã§èšè¿°ãããŸãã ãšåãããã«
jqã®ä»ã®ãã¹ãŠããããã®åçŽãªå€ã¯å ¥åãåãåããåºåãçæããŸã- 42 ã
å ¥åãåãåãããããç¡èŠãã代ããã«42ãè¿ãæå¹ãªjqåŒã
é å å»ºèš - []
JSONã®å Žåãšåæ§ã«ã [] ã®ããã«ãé åãæ§ç¯ããããã«äœ¿çšãããŸã ã1,2,3]ã é åã®èŠçŽ ã¯
ä»»æã®jqåŒã§ããã ãã¹ãŠã®åŒã«ãã£ãŠçæããããã¹ãŠã®çµæãåéãããŸã
XNUMXã€ã®å€§ããªé åã«ã ããã䜿çšããŠãæ¢ç¥ã®éã®å€ããé åãäœæã§ããŸã
ïŒã®ãã㪠[.fooã ãããŒã .ããº]ïŒãŸãã¯ããã£ã«ã¿ãŒã®ãã¹ãŠã®çµæãé åã«ãåéãããŸãïŒ
in [.items []ãname])
ãããæŒç®åãç解ãããšãjqã®é åæ§æãå¥ã®æ¹æ³ã§ç¢ºèªã§ããŸãã
å ïŒè¡šçŸ ã1,2,3] ã«ã³ãåºåãã®é åã«çµã¿èŸŒã¿ã®æ§æã䜿çšããŠããŸããã
ãããã代ããã«é©çšããŠããŸã [] åŒ1,2,3ïŒããã¯
XNUMXã€ã®ç°ãªãçµæãçæãããŸãïŒã
ãã£ã«ã¿ããæã¡ã®å Žå X ããã¯XNUMXã€ã®çµæãçæãã次ã«åŒ [X] ãçæããŸã
åäžã®çµæãXNUMXã€ã®èŠçŽ ã®é åã
jqÂŽ [ãuserã.projects []] ÂŽ
{"user"ïŒ "stedolan"ã "projects"ïŒ["jq"ã "wikiflow"]}
=> ["stedolan"ã "jq"ã "wikiflow"]
ãªããžã§ã¯ã - {}
JSONã®ããã«ã {} 次ã®ããã«ããªããžã§ã¯ãïŒå¥åèŸæžãŸãã¯ããã·ã¥ïŒãäœæããããã®ãã®ã§ãã {"a"ïŒ 42ã
ãbãïŒ 17/XNUMX/XNUMX}.
ããŒããè³¢æãïŒãã¹ãŠã¢ã«ãã¡ãããæåïŒã®å ŽåãåŒçšç¬Šã¯çç¥ã§ããŸãã
å€ã¯ä»»æã®åŒã«ããããšãã§ããŸãïŒãã ããããã
è€éãªãã®ïŒãããã¯{}åŒã®å ¥åã«é©çšãããŸãïŒãã¹ãŠã®ãã£ã«ã¿ãŒãèŠããŠãããŠãã ããïŒ
å ¥åãšåºåããããŸãïŒã
{fooïŒ.bar}
JSONãªããžã§ã¯ããçæããŸã {"foo"ïŒ 42/XNUMX/XNUMX} JSONãªããžã§ã¯ããäžããããå Žå {"ããŒ"ïŒ42ã "baz"ïŒ43}.
ããã䜿çšããŠããªããžã§ã¯ãã®ç¹å®ã®ãã£ãŒã«ããéžæã§ããŸããå ¥åããªããžã§ã¯ãã§ããå Žå
ãuserãããtitleãããidãããcontentãã®åãã£ãŒã«ãã§ããuserããšãtitleãã ããå¿ èŠãªå Žåã¯ã次ã®ããšãã§ããŸãã
æžããŸã
{ãŠãŒã¶ãŒïŒ.userãã¿ã€ãã«ïŒ.title}
ããã¯éåžžã«äžè¬çã§ãããããã·ã§ãŒãã«ããæ§æããããŸãã {ãŠãŒã¶ãŒã é¡å}.
åŒã®XNUMXã€ãè€æ°ã®çµæãçæããå Žåãè€æ°ã®èŸæžã¯æ¬¡ã®ããã«ãªããŸãã
çç£ã å ¥åã®å Žå
{"user"ïŒ "stedolan"ã "titles"ïŒ["JQ Primer"ã "More JQ"]}
ããããåŒ
{ãŠãŒã¶ãŒãã¿ã€ãã«ïŒ.titles []}
XNUMXã€ã®åºåãçæããŸãã
{"user"ïŒ "stedolan"ã "title"ïŒ "JQ Primer"}
{"user"ïŒ "stedolan"ã "title"ïŒ "More JQ"}
ããŒãæ¬åŒ§ã§å²ããšãåŒãšããŠè©äŸ¡ãããŸãã ãšãšãã«
äžèšãšåãå ¥åã
{ïŒ.userïŒïŒ. titles}
çç£ãã
{"stedolan"ïŒ["JQ Primer"ã "More JQ"]}
jqÂŽ {userãtitleïŒ.titles []} ÂŽ
{"user"ïŒ "stedolan"ã "titles"ïŒ["JQ Primer"ã "More JQ"]}
=> {"user"ïŒ "stedolan"ã "title"ïŒ "JQ Primer"}ã{"user"ïŒ "stedolan"ã "title"ïŒ "More JQ"}
jqÂŽ {ïŒãuserïŒïŒ. titles} ÂŽ
{"user"ïŒ "stedolan"ã "titles"ïŒ["JQ Primer"ã "More JQ"]}
=> {"stedolan"ïŒ["JQ Primer"ã "More JQ"]}
ãã«ãã£ã³ ãªãã¬ãŒã¿ãŒ ãã㊠é¢æ°
äžéšã®jqæŒç®åïŒããšãã°ã +ïŒåœŒãã®ã¿ã€ãã«å¿ããŠç°ãªãããšããã
åŒæ°ïŒé åãæ°å€ãªã©ïŒã ãã ããjqã¯æé»çãªåå€æãè¡ããŸããã ããã
ãªããžã§ã¯ãã«æååãè¿œå ããããšãããšããšã©ãŒã¡ãã»ãŒãžã衚瀺ãããçµæã¯åŸãããŸããã
è¿œå - +
ãªãã¬ãŒã¿ãŒ + XNUMXã€ã®ãã£ã«ã¿ãŒãåããäž¡æ¹ãåãå ¥åã«é©çšãã
äžç·ã«çµæã ãè¿œå ãã®æå³ã¯ãé¢ä¿ããã¿ã€ãã«ãã£ãŠç°ãªããŸãã
· æ°å éåžžã®ç®è¡ã§è¿œå ãããŸãã
· é å ãã倧ããªé åã«é£çµãããããšã«ãã£ãŠè¿œå ãããŸãã
· 匊 ãã倧ããªæååã«çµåããããšã§è¿œå ãããŸãã
· ãªããžã§ã¯ã ããŒãžãã€ãŸããäž¡æ¹ãããã¹ãŠã®ããŒãšå€ã®ãã¢ãæ¿å ¥ããããšã«ãã£ãŠè¿œå ãããŸã
ãªããžã§ã¯ããåäžã®çµåããããªããžã§ã¯ãã«ã äž¡æ¹ã®ãªããžã§ã¯ãã«åãå€ãå«ãŸããŠããå Žå
ããŒãå³åŽã®ãªããžã§ã¯ã + åã¡ãŸãã ïŒååž°çããŒãžã®å Žåã¯ã * ãªãã¬ãŒã¿ãŒãïŒ
ãã« ä»»æã®å€ã«è¿œå ã§ããä»ã®å€ã¯å€æŽãããã«è¿ãããŸãã
jqÂŽ.a + 1ÂŽ
{"a"ïŒ7}
=> 8
jqÂŽ.a + .bÂŽ
{"a"ïŒ[1,2]ã "b"ïŒ[3,4]}
=> [1,2,3,4]
jqÂŽ.a + nullÂŽ
{"a"ïŒ1}
=> 1
jqÂŽ.a + 1ÂŽ
{}
=> 1
jqÂŽ {aïŒ1} + {bïŒ2} + {cïŒ3} + {aïŒ42} ÂŽ
ãã«
=> {"a"ïŒ42ã "b"ïŒ2ã "c"ïŒ3}
åŒãç® - -
æ°å€ã®éåžžã®ç®è¡æžç®ãšåæ§ã«ã - æŒç®åã¯é åã§äœ¿çšã§ããŸã
æåã®é åããXNUMXçªç®ã®é åã®èŠçŽ ã®ãã¹ãŠã®åºçŸãåé€ããŸãã
jq ÂŽ4-.aÂŽ
{"a"ïŒ3}
=> 1
jqÂŽã -["xml"ã "yaml"] ÂŽ
["xml"ã "yaml"ã "json"]
=> ["json"]
ä¹ç®ã åå²ã ã¢ãžã¥ã - *, /, & %
ãããã®äžçœ®æŒç®åã¯ãXNUMXã€ã®æ°å€ãäžãããããšãã«æåŸ ã©ããã«åäœããŸãã ãŒãé€ç®ã¯çºçããŸã
ãšã©ãŒã x % y yãæ³ãšããŠxãèšç®ããŸãã
æååã«æ°å€ãæãããšããã®æååã®é£çµãçæãããŸãã
åã "NS" * 0 çç£ãã ãã«.
æååãå¥ã®æååã§åå²ãããšãæåã®æååãXNUMXçªç®ã®æååãåºåãæåãšããŠäœ¿çšããŠåå²ãããŸãã
XNUMXã€ã®ãªããžã§ã¯ããä¹ç®ãããšãããããååž°çã«ããŒãžãããŸããããã¯å ç®ã®ããã«æ©èœããŸãããäž¡æ¹ã®å Žå
ãªããžã§ã¯ãã«ã¯åãããŒã®å€ãå«ãŸããå€ã¯ãªããžã§ã¯ãã§ãããXNUMXã€ã¯ããŒãžãããŸã
åãæŠç¥ã§ã
jq ÂŽ10 /ã * 3ÂŽ
5
=> 6
jqÂŽã / "ã" ÂŽ
ãaãbãcãdãeã
=> ["a"ã "bãcãd"ã "e"]
jqÂŽ {"k"ïŒ{"a"ïŒ1ã "b"ïŒ2}} * {"k"ïŒ{"a"ïŒ0ã "c"ïŒ3}} ÂŽ
ãã«
=> {"k"ïŒ{"a"ïŒ0ã "b"ïŒ2ã "c"ïŒ3}}
jqÂŽã[] | ïŒ1 /ãïŒïŒÂŽ
[1,0ã-1]
=> 1ã-1
é·ã
å èµæ©èœ é·ã ããŸããŸãªã¿ã€ãã®å€ã®é·ããååŸããŸãã
ã»ã®é·ã æåå å«ãŸããŠããUnicodeã³ãŒããã€ã³ãã®æ°ã§ãïŒ
çŽç²ãªASCIIã®å ŽåãJSONã§ãšã³ã³ãŒãããããã€ãåäœã®é·ããšåãã§ãïŒã
ã»ã®é·ã é å èŠçŽ ã®æ°ã§ãã
ã»ã®é·ã ãªããžã§ã¯ã ããŒãšå€ã®ãã¢ã®æ°ã§ãã
ã»ã®é·ã ãã« ãŒãã§ãã
jqÂŽã[] | é·ã ÂŽ[[1,2]ã "string"ã{"a"ïŒ2}ãnull] => 2ã6ã1ã0
ããŒã ããŒ_æªåé¡
å èµæ©èœ ããŒããªããžã§ã¯ããäžãããããšããã®ããŒãé åã§è¿ããŸãã
ããŒã¯ãUnicodeã³ãŒããã€ã³ãã®é åºã§ãã¢ã«ãã¡ãããé ã«ããœãŒããããŸãã ããã¯æ³šæã§ã¯ãããŸãã
ããã¯ç¹å®ã®èšèªã§ã¯ç¹ã«æå³ããããŸããã
ãã±ãŒã«èšå®ã«é¢ä¿ãªããåãããŒã»ãããæã€ä»»æã®XNUMXã€ã®ãªããžã§ã¯ãã§åãã§ãã
æ¥æ ã㌠é åãäžãããããšããã®é åã®æå¹ãªã€ã³ããã¯ã¹ãè¿ããŸãïŒæŽæ°
0ããé·ã-1ãŸã§ã
ã ããŒ_æªåé¡ æ©èœã¯æ¬¡ã®ãããªãã®ã§ã ããŒããã ããå ¥åããªããžã§ã¯ãã®å ŽåãããŒ
ãœãŒããããŸãããã代ããã«ããŒã¯å€§ãŸãã«æ¿å ¥é ã«ãªããŸãã
jqãããŒã
{"abc"ïŒ1ã "abcd"ïŒ2ã "Foo"ïŒ3}
=> ["Foo"ã "abc"ã "abcd"]
jqãããŒã
ã42,3,35]
=> [0,1,2]
hasïŒkeyïŒ
å èµæ©èœ æã£ãŠããŸã å ¥åãªããžã§ã¯ããæå®ãããããŒãæã£ãŠããããå ¥åãæã£ãŠããããè¿ããŸã
é åã«ã¯ãæå®ãããã€ã³ããã¯ã¹ã«èŠçŽ ããããŸãã
hasïŒ$ keyïŒ ãã©ããããã§ãã¯ããã®ãšåãå¹æããããŸã $ key è¿ãããé åã®ã¡ã³ããŒã§ã
by ããŒãã®ã®ã æã£ãŠããŸã ããéããªããŸãã
jqÂŽmapïŒhasïŒ "foo"ïŒïŒ ÂŽ
[{"foo"ïŒ42}ã{}]
=> [trueãfalse]
jqÂŽmapïŒæã£ãŠããŸãïŒ2ïŒïŒ ÂŽ
[[0,1]ã["a"ã "b"ã "c"]]
=> [falseãtrue]
in
å èµæ©èœ in å ¥åããŒãæå®ããããªããžã§ã¯ãããŸãã¯å ¥åã€ã³ããã¯ã¹ã«ããããšãè¿ããŸã
æå®ãããé åã®èŠçŽ ã«å¯Ÿå¿ããŸãã ããã¯ãæ¬è³ªçã«ãã®éããŒãžã§ã³ã§ãã
æã£ãŠããŸã.
jqÂŽã[] | inïŒ{"foo"ïŒ42}ïŒ ÂŽ
["foo"ã "bar"]
=>çãåœ
jqÂŽmapïŒinïŒ[0,1]ïŒïŒ ÂŽ
[2ã0]
=> [falseãtrue]
pathïŒpath_expressionïŒ
æå®ããããã¹åŒã®é åè¡šçŸãã§åºåããŸã .ã åºåã¯ã®é åã§ã
æååïŒobjects0ã®ããŒããã³/ãŸãã¯æ°å€ïŒé åã€ã³ããã¯ã¹ïŒã
ãã¹åŒã¯æ¬¡ã®ãããªjqåŒã§ã .aã ã ãã§ãªã ã[]ã ãã¹ã«ã¯XNUMXã€ã®ã¿ã€ãããããŸã
åŒïŒå®å šã«äžèŽãããã®ãšäžèŽããªããã®ã äŸãã°ã .abc ãããŸã
å®å šäžèŽãã¹åŒã .a []ãb ããã§ã¯ãããŸããã
pathïŒexact_path_expressionïŒ ãã¹åŒã®é åè¡šçŸãçæããŸã
ã«ååšããªããŠã .ããã . is ãã« ãŸãã¯é åãŸãã¯ãªããžã§ã¯ãã
ãã¹ïŒãã¿ãŒã³ïŒ äžèŽãããã¹ã®é åè¡šçŸãçæããŸã ãã¿ãŒã³ ãã
ãã¹ã¯ã«ååšããŸã ..
ãã¹åŒã¯éåžžã®åŒãšå€ãããªãããšã«æ³šæããŠãã ããã è¡šçŸ
pathïŒ.. | selectïŒtype == "boolean"ïŒïŒ ã®ããŒã«å€ãžã®ãã¹ãŠã®ãã¹ãåºåããŸã .ããããŠã®ã¿
ãããã®ãã¹ã
jqÂŽpathïŒ.a [0] .bïŒ ÂŽ
ãã«
=> ["a"ã0ã "b"]
jqÂŽ [pathïŒ..ïŒ] ÂŽ
{"a"ïŒ[{"b"ïŒ1}]}
=> [[]ã["a"]ã["a"ã0]ã["a"ã0ã "b"]]
delïŒpath_expressionïŒ
å èµæ©èœ ã€ã³ã¯ã«ãŒã ããŒãšããã«å¯Ÿå¿ããå€ããªããžã§ã¯ãããåé€ããŸãã
jqÂŽdelïŒ.fooïŒ ÂŽ
{"foo"ïŒ42ã "bar"ïŒ9001ã "baz"ïŒ42}
=> {"bar"ïŒ9001ã "baz"ïŒ42}
jqÂŽdelïŒã[1ã2]ïŒ ÂŽ
["foo"ã "bar"ã "baz"]
=> ["foo"]
to_entriesã from_entriesã with_entries
ãããã®é¢æ°ã¯ããªããžã§ã¯ããšããŒãšå€ã®ãã¢ã®é åã®éã§å€æãè¡ããŸãã ããã to_entries
ãªããžã§ã¯ããæž¡ããã次㫠k: v å ¥åã®ãšã³ããªãåºåé åã«ã¯æ¬¡ã®ãã®ãå«ãŸããŸã
{"éµ"ïŒ k, "䟡å€"ïŒ v}.
from_entries å察ã®å€æãè¡ãã with_entriesïŒfooïŒ ã®ç¥èšã§ã
to_entries | mapïŒfooïŒ | from_entriesããã¹ãŠã®ããŒã«å¯ŸããŠäœããã®æäœãè¡ãã®ã«åœ¹ç«ã¡ãŸã
ãªããžã§ã¯ãã®å€ã from_entries ããŒãããŒãååãå€ãããã³å€ãããŒãšããŠåãå ¥ããŸãã
jqÂŽto_entriesÂŽ
{"a"ïŒ1ã "b"ïŒ2}
=> [{"key"ïŒ "a"ã "value"ïŒ1}ã{"key"ïŒ "b"ã "value"ïŒ2}]
jqÂŽfrom_entriesÂŽ
[{"key"ïŒ "a"ã "value"ïŒ1}ã{"key"ïŒ "b"ã "value"ïŒ2}]
=> {"a"ïŒ1ã "b"ïŒ2}
jqÂŽwith_entriesïŒ.key | = "KEY_" +ãïŒ ÂŽ
{"a"ïŒ1ã "b"ïŒ2}
=> {"KEY_a"ïŒ1ã "KEY_b"ïŒ2}
selectïŒboolean_expressionïŒ
é¢æ° selectïŒfooïŒ æ¬¡ã®å Žåãå ¥åã¯å€æŽãããã«çæãããŸã foo ãã®å ¥åã«å¯ŸããŠtrueãè¿ãã
ãã以å€ã®å Žåã¯åºåãçæããŸããã
ãªã¹ãã®ãã£ã«ã¿ãªã³ã°ã«åœ¹ç«ã¡ãŸãã ã1,2,3] | mapïŒselectïŒã >= 2ïŒïŒ ããªããäžããã ãã ã2,3].
jqÂŽmapïŒselectïŒã> = 2ïŒïŒ ÂŽ
ã1,5,3,0,7]
=> [5,3,7]
jqÂŽã[] | selectïŒ.id == "second"ïŒ ÂŽ
[{"id"ïŒ "first"ã "val"ïŒ1}ã{"id"ïŒ "second"ã "val"ïŒ2}]
=> {"id"ïŒ "second"ã "val"ïŒ2}
é åã ãªããžã§ã¯ãã iterablesã ããŒã«å€ã æ°ã æ³ç·ã æéã æååã ãã«ã å€ã
ã¹ã«ã©ãŒ
ãããã®ãã«ãã€ã³ã¯ãé åããªããžã§ã¯ããå埩å¯èœãªããžã§ã¯ãïŒé åãŸãã¯
ãªããžã§ã¯ãïŒãããŒã«å€ãæ°å€ãæ£èŠæ°ãæéæ°ãæååãnullãnull以å€
ãããããå€ãããã³éå埩å¯èœã
jqÂŽã[] | numbersÂŽ
[[]ã{}ã1ã "foo"ãnullãtrueãfalse]
=> 1
空ã®
空㮠çµæãè¿ããŸããã ãŸã£ãããããŸããã ã§ããªã ãã«.
ããŸã«äŸ¿å©ã§ãã ããªãããããå¿ èŠãšãããã©ããããªãã¯ç¥ã£ãŠããã§ããã:)
jq ÂŽ1ã空ã2ÂŽ
ãã«
=> 1ã2
jqÂŽ [1,2ãemptyã3] ÂŽ
ãã«
=> [1,2,3]
ãšã©ãŒïŒã¡ãã»ãŒãžïŒ
ã®ããã«ãšã©ãŒãçæããŸã .a nullãšãªããžã§ã¯ã以å€ã®å€ã«é©çšãããŸããã
äžããããã¡ãã»ãŒãžããšã©ãŒã®å€ãšããŠäœ¿çšããŸãã
$ __ loc__
ãfileãããŒãšãlineãããŒãæã¡ããã¡ã€ã«åãšè¡çªå·ãæã€ãªããžã§ã¯ããçæããŸã
ã³ã©ãã¬ãŒ $ __ loc__ å€ãšããŠçºçããŸãã
jqÂŽtry errorïŒ "\ïŒ$ __ loc __ïŒ"ïŒcatch .ÂŽ
ãã«
=> "{\" file \ "ïŒ\" \"ã\"ã©ã€ã³1}"
mapïŒxïŒã map_valuesïŒxïŒ
ä»»æã®ãã£ã«ã¿ãŒçš x, mapïŒxïŒ å ¥åé åã®èŠçŽ ããšã«ãã®ãã£ã«ã¿ãŒãå®è¡ãã
åºåã«æ°ããé åãçæããŸãã ãããïŒã+ 1ïŒ ã®é åã®åèŠçŽ ãã€ã³ã¯ãªã¡ã³ãããŸã
æ°åã
åæ§ã«ã map_valuesïŒxïŒ èŠçŽ ããšã«ãã®ãã£ã«ã¿ãŒãå®è¡ããŸããã
ãªããžã§ã¯ããæž¡ããããšãã®ãªããžã§ã¯ãã
mapïŒxïŒ ã«çžåœããŸã [ã[] | x]ã å®éãããããã®å®çŸ©æ¹æ³ã§ãã åæ§ã«ã
map_valuesïŒxïŒ ãšããŠå®çŸ©ããã ã[] |= x.
jqÂŽmapïŒã+ 1ïŒ ÂŽ
ã1,2,3]
=> [2,3,4]
jqÂŽmap_valuesïŒã+ 1ïŒ ÂŽ
{"a"ïŒ1ã "b"ïŒ2ã "c"ïŒ3}
=> {"a"ïŒ2ã "b"ïŒ3ã "c"ïŒ4}
ãã¹ã ãã¹ïŒnode_filterïŒã ãªãŒããã¹
ãã¹ å ¥åå ã®ãã¹ãŠã®èŠçŽ ãžã®ãã¹ãåºåããŸãïŒãã ãã
ãè¡šã空ã®ãªã¹ãã èªäœïŒã
ãã¹ïŒfïŒ ãã¹ãåºåããå€ f æ¬åœã§ãã ããã¯ã ãã¹ïŒçªå·ïŒ
ãã¹ãŠã®æ°å€ãžã®ãã¹ãåºåããŸãã
ãªãŒããã¹ ã®ãšã€ãªã¢ã¹ã§ã ãã¹ïŒã¹ã«ã©ãŒïŒ; ãªãŒããã¹ is éæšå¥šã® ã§åé€ãããŸã
次ã®ã¡ãžã£ãŒãªãªãŒã¹ã
jqÂŽ [ãã¹] ÂŽ
[1ã[[]ã{"a"ïŒ2}]]
=> [[0],[1],[1,0],[1,1],[1,1,"a"]]
jqÂŽ [pathsïŒscalarsïŒ] ÂŽ
[1ã[[]ã{"a"ïŒ2}]]
=> [[0]ã[1,1ã "a"]]
å ããŸã
ãã£ã«ã¿ãŒ å ããŸã å ¥åãšããŠé åãåãåããåºåãšããŠé åã®èŠçŽ ãçæããŸã
äžç·ã«è¿œå ãããŸããã ããã¯ãã¿ã€ãã«å¿ããŠãåèšãé£çµããŸãã¯ããŒãžãæå³ããå ŽåããããŸã
å ¥åé åã®èŠçŽ -ã«ãŒã«ã¯ã + ãªãã¬ãŒã¿
ïŒäžèšïŒ
å ¥åã空ã®é åã®å Žåã å ããŸã åç ãã«.
jqãè¿œå ã
["a"ã "b"ã "c"]
=>ãabcã
jqãè¿œå ã
[1ã2ã3]
=> 6
jqãè¿œå ã
[]
=> null
ã©ããã anyïŒæ¡ä»¶ïŒã anyïŒãžã§ãã¬ãŒã¿ãŒ; ç¶æ ïŒ
ãã£ã«ã¿ãŒ ã©ãã ããŒã«å€ã®é åãå ¥åãšããŠåãåãããçæããŸã true åºåãšããŠ
é åã®èŠçŽ ã®ãããã㯠true.
å ¥åã空ã®é åã®å Žåã ã©ãã åç false.
ã anyïŒæ¡ä»¶ïŒ formã¯ãæå®ãããæ¡ä»¶ãå ¥åé åã®èŠçŽ ã«é©çšããŸãã
ã anyïŒãžã§ãã¬ãŒã¿ãŒ; ç¶æ ïŒ ãã©ãŒã ã¯ãæå®ãããæ¡ä»¶ãã®ãã¹ãŠã®åºåã«é©çšããŸã
äžãããããžã§ãã¬ãŒã¿ã
jqÂŽanyÂŽ
[ç/åœ]
=> true
jqÂŽanyÂŽ
[falseãfalse]
=> false
jqÂŽanyÂŽ
[]
=> false
å šãŠã allïŒæ¡ä»¶ïŒã allïŒãžã§ãã¬ãŒã¿ãŒ; ç¶æ ïŒ
ãã£ã«ã¿ãŒ ã ããŒã«å€ã®é åãå ¥åãšããŠåãåãããçæããŸã true åºåãšããŠ
é åã®ãã¹ãŠã®èŠçŽ 㯠true.
ã allïŒæ¡ä»¶ïŒ formã¯ãæå®ãããæ¡ä»¶ãå ¥åé åã®èŠçŽ ã«é©çšããŸãã
ã allïŒãžã§ãã¬ãŒã¿ãŒ; ç¶æ ïŒ ãã©ãŒã ã¯ãæå®ãããæ¡ä»¶ãã®ãã¹ãŠã®åºåã«é©çšããŸã
äžãããããžã§ãã¬ãŒã¿ã
å ¥åã空ã®é åã®å Žåã ã åç true.
jqããã¹ãŠã
[ç/åœ]
=> false
jqããã¹ãŠã
[æ¬åœãæ¬åœ]
=> true
jqããã¹ãŠã
[]
=> true
[å¿ èŠ 1.5] å¹³ãã«ããã å¹³ãã«ããïŒæ·±ãïŒ
ãã£ã«ã¿ãŒ å¹³ãã«ãã ãã¹ããããé åã®é åãå ¥åãšããŠåãåããã§ãã©ãããªé åãçæããŸãã
å ã®é åå ã®ãã¹ãŠã®é åã¯ããããã®å€ã«ãã£ãŠååž°çã«çœ®ãæããããŠããŸãã
åŒæ°ãæž¡ããŠããã©ããåãããã¹ãã®ã¬ãã«æ°ãæå®ã§ããŸãã
å¹³ãã«ãã(2) ã®ãããªãã®ã§ã å¹³ãã«ããããã ããæ·±ãã¯XNUMXã¬ãã«ãŸã§ã§ãã
jqããã©ããåã
[1ã[2]ã[[3]]]
=> [1ã2ã3]
jqÂŽå¹³ãã«ããïŒ1ïŒ ÂŽ
[1ã[2]ã[[3]]]
=> [1ã2ã[3]]
jqããã©ããåã
[[]]
=> []
jqããã©ããåã
[{"foo"ïŒ "bar"}ã[{"foo"ïŒ "baz"}]]
=> [{"foo"ïŒ "bar"}ã{"foo"ïŒ "baz"}]
ç¯å²ïŒæ倧ïŒã rangeïŒfrom; uptoïŒ rangeïŒfrom; upto; byïŒ
ã ç¯å² é¢æ°ã¯æ°å€ã®ç¯å²ãçæããŸãã rangeïŒ4; 10ïŒ 6ãã4ã€ã®æ°å€ãçæããŸã
ïŒå æ¬çïŒãã10ïŒæä»çïŒã æ°å€ã¯åå¥ã®åºåãšããŠçæãããŸãã ã€ãããŸã
[ç¯å²ïŒ4; 10ïŒ] ç¯å²ãé åãšããŠååŸããŸãã
0ã€ã®åŒæ°åœ¢åŒã¯ãXNUMXããæå®ãããæ°ãŸã§ã®æ°ãçæããŸãã
1.
XNUMXã€ã®åŒæ°åœ¢åŒã¯ãããæ°å€ãçæããŸã ãã ã㞠件ãŸã§ 1å»ã¿ã§ã
XNUMXã€ã®åŒæ°åœ¢åŒã¯æ°å€ãçæããŸã ãã ã㞠件ãŸã§ ã®å¢å㧠by.
jqÂŽrangeïŒ2; 4ïŒ ÂŽ
ãã«
=> 2ã3
jqÂŽ [rangeïŒ2; 4ïŒ] ÂŽ
ãã«
=> [2,3]
jqÂŽ [ç¯å²ïŒ4ïŒ] ÂŽ
ãã«
=> [0,1,2,3]
jqÂŽ [rangeïŒ0; 10; 3ïŒ] ÂŽ
ãã«
=> [0,3,6,9]
jqÂŽ [rangeïŒ0; 10; -1ïŒ] ÂŽ
ãã«
=> []
jqÂŽ [rangeïŒ0; -5; -1ïŒ] ÂŽ
ãã«
=> [0,-1,-2,-3,-4]
åº
ã åº é¢æ°ã¯ãæ°å€å ¥åã®ããã¢ãè¿ããŸãã
jqãããã¢ã
3.14159
=> 3
å¹³æ¹æ ¹
ã å¹³æ¹æ ¹ é¢æ°ã¯ãæ°å€å ¥åã®å¹³æ¹æ ¹ãè¿ããŸãã
jqÂŽsqrtÂŽ
9
=> 3
ã«çªå·
ã ã«çªå· é¢æ°ã¯ãã®å ¥åãæ°å€ãšããŠè§£æããŸãã æ£ãããã©ãŒããããããŠå€æãããŸã
æååãåçã®æ°å€ã«ããæ°å€ããã®ãŸãŸã«ããŠãä»ã®ãã¹ãŠã®æååã«ãšã©ãŒãäžãã
å ¥åã
jqÂŽã[] | tonumberÂŽ
[1ã "1"]
=> 1ã1
ã²ã
ã ã²ã é¢æ°ã¯ãå ¥åãæååãšããŠåºåããŸãã æååã¯å€æŽãããããã¹ãŠ
ä»ã®å€ã¯JSONã§ãšã³ã³ãŒããããŠããŸãã
jqÂŽã[] | tostringÂŽ
[1ã "1"ã[1]]
=> "1"ã "1"ã "[1]"
type
ã type é¢æ°ã¯ãåŒæ°ã®åãæååãšããŠè¿ããŸããããã¯nullã®XNUMXã€ã§ãã
ããŒã«å€ãæ°å€ãæååãé åããŸãã¯ãªããžã§ã¯ãã
jqÂŽmapïŒtypeïŒ ÂŽ
[0ãfalseã[]ã{}ãnullã "hello"]
=> ["number"ã "boolean"ã "array"ã "object"ã "null"ã "string"]
ç¡éã ãããã ç¡éã§ãã isnanã ç¡éã æ£åžžã§ã
äžéšã®ç®è¡æŒç®ã§ã¯ãç¡é倧ãšãæ°å€ã§ã¯ãªããïŒNaNïŒå€ãçæãããå ŽåããããŸãã ã¶
ç¡é倧 ãã«ãã€ã³ãªã¿ãŒã³ true ãã®å ¥åãç¡éã®å Žåã The ã€ã¹ãã³ ãã«ãã€ã³ãªã¿ãŒã³ true
å ¥åãNaNã®å Žåã The ç¡é ãã«ãã€ã³ã¯æ£ã®ç¡éå€ãè¿ããŸãã 㶠ãã³
ãã«ãã€ã³ã¯NaNãè¿ããŸãã The æ£åžžã§ã çµã¿èŸŒã¿ã¯ãå ¥åãæ£èŠæ°ã®å Žåã«trueãè¿ããŸãã
ãŒãã«ããé€ç®ã¯ãšã©ãŒãçºçãããããšã«æ³šæããŠãã ããã
çŸåšãç¡é倧ãNaNãããã³æºæ³ç·ã§åäœããã»ãšãã©ã®ç®è¡æŒç®ã¯ã
ãšã©ãŒãçºçãããŸãã
jqÂŽã[] | ïŒç¡é*ãïŒ<0ÂŽ
[-1ã1]
=>çãåœ
jqÂŽinfiniteãnan | ã¿ã€ã
ãã«
=>ãçªå·ãããçªå·ã
ãœãŒãã sort_byïŒpath_expressionïŒ
ã sort é¢æ°ã¯å ¥åããœãŒãããŸããå ¥åã¯é åã§ãªããã°ãªããŸããã å€ã¯ã§ãœãŒããããŸã
次ã®é åºïŒ
· ãã«
· false
· true
ã»æ°å
ã»æååãã¢ã«ãã¡ãããé ïŒUnicodeã³ãŒããã€ã³ãå€ã«ããïŒ
ã»é åãèŸæžåŒé åº
ã»ãªããžã§ã¯ã
ãªããžã§ã¯ãã®é åºã¯å°ãè€éã§ãããŸãããªããžã§ã¯ããæ¯èŒããŠæ¯èŒããŸãã
ããŒã®ã»ããïŒãœãŒããããé åºã®é åãšããŠïŒãããã³ãããã®ããŒãçããå Žåãå€ã¯æ¬¡ã®ããã«ãªããŸãã
ããŒããšã«æ¯èŒã
sort ãªããžã§ã¯ãã®ç¹å®ã®ãã£ãŒã«ãã§äžŠã¹æ¿ããããjqãã£ã«ã¿ãŒãé©çšãããããããã«äœ¿çšã§ããŸãã
sort_byïŒfooïŒ ã®çµæãæ¯èŒããŠXNUMXã€ã®èŠçŽ ãæ¯èŒããŸã foo åèŠçŽ ã«ã
jqÂŽsortÂŽ
[8,3ãnullã6]
=> [nullã3,6,8]
jqÂŽsort_byïŒ.fooïŒ ÂŽ
[{"foo"ïŒ4ã "bar"ïŒ10}ã{"foo"ïŒ3ã "bar"ïŒ100}ã{"foo"ïŒ2ã "bar"ïŒ1}]
=> [{"foo"ïŒ2ã "bar"ïŒ1}ã{"foo"ïŒ3ã "bar"ïŒ100}ã{"foo"ïŒ4ã "bar"ïŒ10}]
group_byïŒpath_expressionïŒ
group_byïŒ.fooïŒ é åãå ¥åãšããŠåãåããåãèŠçŽ ãæã€èŠçŽ ãã°ã«ãŒãåããŸã .foo ãã£ãŒã«ã
å¥ã ã®é åã«åå²ããããããã¹ãŠã®é åããã倧ããªé åã®èŠçŽ ãšããŠçæããŸãã
ã®å€ã§ãœãŒã .foo ãã£ãŒã«ãã
ãã£ãŒã«ãã¢ã¯ã»ã¹ã ãã§ãªããä»»æã®jqåŒã代ããã«äœ¿çšã§ããŸã .fooã ä»åã
é åºã¯ã sort äžèšã®æ©èœã
jqÂŽgroup_byïŒ.fooïŒ ÂŽ
[{"foo"ïŒ1ã "bar"ïŒ10}ã{"foo"ïŒ3ã "bar"ïŒ100}ã{"foo"ïŒ1ã "bar"ïŒ1}]
=> [[{"foo"ïŒ1ã "bar"ïŒ10}ã{"foo"ïŒ1ã "bar"ïŒ1}]ã[{"foo"ïŒ3ã "bar"ïŒ100}]]
å maxã min_byïŒpath_expïŒã max_byïŒpath_expïŒ
å ¥åé åã®æå°èŠçŽ ãŸãã¯æ倧èŠçŽ ãèŠã€ããŸãã
ã min_byïŒpath_expïŒ & max_byïŒpath_expïŒ é¢æ°ã䜿çšãããšãç¹å®ã®ãæå®ã§ããŸã
調ã¹ããã£ãŒã«ããŸãã¯ããããã£ãäŸïŒ min_byïŒ.fooïŒ æå°ã®ãªããžã§ã¯ããæ€çŽ¢ããŸã foo
ãã£ãŒã«ãã
jqÂŽminÂŽ
ã5,4,2,7]
=> 2
jqÂŽmax_byïŒ.fooïŒ ÂŽ
[{"foo"ïŒ1ã "bar"ïŒ14}ã{"foo"ïŒ2ã "bar"ïŒ3}]
=> {"foo"ïŒ2ã "bar"ïŒ3}
åæ§çã unique_byïŒpath_expïŒ
ã ãŠããŒã¯ é¢æ°ã¯å ¥åãšããŠé åãåãåããåãèŠçŽ ã®é åãçæããŸãã
éè€ãåé€ããŠã䞊ã¹æ¿ããããé åºã
ã unique_byïŒpath_expïŒ é¢æ°ã¯ãã«ãã£ãŠååŸãããå€ããšã«XNUMXã€ã®èŠçŽ ã®ã¿ãä¿æããŸã
åŒæ°ãé©çšããŸãã ãã¹ãŠããXNUMXã€ã®èŠçŽ ãåãåºããŠé åãäœæããããšãšèããŠãã ãã
ã«ãã£ãŠçæãããã°ã«ãŒã ã°ã«ãŒãããã.
jqããŠããŒã¯ã
ã1,2,5,3,5,3,1,3]
=> [1,2,3,5]
jqÂŽunique_byïŒ.fooïŒ ÂŽ
[{"foo"ïŒ1ã "bar"ïŒ2}ã{"foo"ïŒ1ã "bar"ïŒ3}ã{"foo"ïŒ4ã "bar"ïŒ5}]
=> [{"foo"ïŒ1ã "bar"ïŒ2}ã{"foo"ïŒ4ã "bar"ïŒ5}]
jqÂŽunique_byïŒlengthïŒ ÂŽ
[ãååããããããŒã³ã³ãããåç«ãããèãããã¢ã¹ãã©ã¬ã¹ã]
=> ["ããŒã³ã³"ã "ååã"ã "ã¢ã¹ãã©ã¬ã¹"]
é
ãã®é¢æ°ã¯é åãå転ããŸãã
jqããªããŒã¹ã
ã1,2,3,4]
=> [4,3,2,1]
containsïŒelementïŒ
ãã£ã«ã¿ãŒ å«ãïŒbïŒ bãå ¥åå ã«å®å šã«å«ãŸããŠããå ŽåãtrueãçæããŸãã A
BãAã®éšåæååã§ããå ŽåãæååBã¯æååAã«å«ãŸããŸããé åBã¯ã«å«ãŸããŸãã
Bã®ãã¹ãŠã®èŠçŽ ãAã®ä»»æã®èŠçŽ ã«å«ãŸããŠããå Žåã¯ãé åAããªããžã§ã¯ãBã¯
Bã®ãã¹ãŠã®å€ãAã®å€ã«å«ãŸããŠããå Žåããªããžã§ã¯ãAã«å«ãŸããŸãã
åãããŒã ä»ã®ãã¹ãŠã®ã¿ã€ãã¯ãããããçããå Žåãäºãã«å«ãŸããŠãããšèŠãªãããŸãã
jqÂŽcontainsïŒ "bar"ïŒ ÂŽ
ãfoobarã
=> true
jqÂŽcontainsïŒ["baz"ã "bar"]ïŒ ÂŽ
["foobar"ã "foobaz"ã "blarp"]
=> true
jqÂŽcontainsïŒ["bazzzzz"ã "bar"]ïŒ ÂŽ
["foobar"ã "foobaz"ã "blarp"]
=> false
jqÂŽcontainsïŒ{fooïŒ12ãbarïŒ[{barpïŒ12}]}ïŒ ÂŽ
{"foo"ïŒ12ã "bar"ïŒ[1,2ã{"barp"ââïŒ12ã "blip"ïŒ13}]}
=> true
jqÂŽcontainsïŒ{fooïŒ12ãbarïŒ[{barpïŒ15}]}ïŒ ÂŽ
{"foo"ïŒ12ã "bar"ïŒ[1,2ã{"barp"ââïŒ12ã "blip"ïŒ13}]}
=> false
ã€ã³ããã¯ã¹
ã®ã€ã³ããã¯ã¹ãå«ãé åãåºåããŸã . ã³ã©ãã¬ãŒ s çºçããŸãã å ¥åã¯é åã§ããå¯èœæ§ããããŸãã
ã©ã¡ãã®å Žå s ãé åã®å Žåãã€ã³ããã¯ã¹åºåã¯ãã®ãã¹ãŠã®èŠçŽ ã .
ã®ãããã«äžèŽããŸã s.
jqÂŽindicesïŒ "ã"ïŒ ÂŽ
ãaãbãcdãefgãhijkã
=> [3,7,12]
jqŽ玢åŒïŒ1ïŒ ÂŽ
ã0,1,2,1,3,1,4]
=> [1,3,5]
jqÂŽindicesïŒ[1,2]ïŒ ÂŽ
ã0,1,2,3,1,4,2,5,1,2,6,7]
=> [1,8]
ã€ã³ããã¯ã¹ã rindexïŒsïŒ
æåã®ã€ã³ããã¯ã¹ãåºåããŸãïŒindexïŒãŸãã¯æåŸïŒã€ã³ããã¯ã¹ïŒã®çºç s å ¥åã§ã
jqÂŽindexïŒ "ã"ïŒ ÂŽ
ãaãbãcdãefgãhijkã
=> 3
jqÂŽrindexïŒ "ã"ïŒ ÂŽ
ãaãbãcdãefgãhijkã
=> 12
å éš
ãã£ã«ã¿ãŒ å éšïŒbïŒ å ¥åãbå ã«å®å šã«å«ãŸããŠããå ŽåãtrueãçæãããŸãã ãã
æ¬è³ªçã«ãã®éããŒãžã§ã³ã§ã å«ãŸããŠããŸã.
jqÂŽinsideïŒ "foobar"ïŒ ÂŽ
"ããŒ"
=> true
jqÂŽinsideïŒ["foobar"ã "foobaz"ã "blarp"]ïŒ ÂŽ
["baz"ã "bar"]
=> true
jqÂŽinsideïŒ["foobar"ã "foobaz"ã "blarp"]ïŒ ÂŽ
["bazzzzz"ã "bar"]
=> false
jqÂŽinsideïŒ{"foo"ïŒ12ã "bar"ïŒ[1,2ã{"barp"ââïŒ12ã "blip"ïŒ13}]}ïŒ ÂŽ
{"foo"ïŒ12ã "bar"ïŒ[{"barp"ââïŒ12}]}
=> true
jqÂŽinsideïŒ{"foo"ïŒ12ã "bar"ïŒ[1,2ã{"barp"ââïŒ12ã "blip"ïŒ13}]}ïŒ ÂŽ
{"foo"ïŒ12ã "bar"ïŒ[{"barp"ââïŒ15}]}
=> false
startwithïŒstrïŒ
åºå true ããã ã æå®ãããæåååŒæ°ã§å§ãŸããŸãã
jqÂŽ [ã[] | startupswithïŒ "foo"ïŒ] ÂŽ
["fo"ã "foo"ã "barfoo"ã "foobar"ã "barfoob"]
=> [falseãtrueãfalseãtrueãfalse]
endswithïŒstrïŒ
åºå true ããã ã æå®ãããæåååŒæ°ã§çµäºããŸãã
jqÂŽ [ã[] | endswithïŒ "foo"ïŒ] ÂŽ
["foobar"ã "barfoo"]
=> [falseãtrue]
çµã¿åããã çµã¿åããïŒnïŒ
å ¥åé åå ã®é åã®èŠçŽ ã®ãã¹ãŠã®çµã¿åãããåºåããŸãã äžããããå Žå
åŒæ° nãããã¯ã®ãã¹ãŠã®çµã¿åãããåºåããŸã n å ¥åé åã®ç¹°ãè¿ãã
jqãçµã¿åããã
[[1,2]ã[3ã4]]
=> [1ã3]ã[1ã4]ã[2ã3]ã[2ã4]
jqÂŽçµã¿åããïŒ2ïŒ ÂŽ
[0ã1]
=> [0ã0]ã[0ã1]ã[1ã0]ã[1ã1]
ltrimstrïŒstrïŒ
æå®ããããã¬ãã£ãã¯ã¹æååã§å§ãŸãå Žåã¯ãåé€ãããå ¥åãåºåããŸãã
jqÂŽ [ã[] | ltrimstrïŒ "foo"ïŒ] ÂŽ
["fo"ã "foo"ã "barfoo"ã "foobar"ã "afoo"]
=> ["fo"ã ""ã "barfoo"ã "bar"ã "afoo"]
rtrimstrïŒstrïŒ
æå®ããããµãã£ãã¯ã¹æååãæåŸã«ããå Žåã¯ããããåé€ããŠå ¥åãåºåããŸãã
jqÂŽ [ã[] | rtrimstrïŒ "foo"ïŒ] ÂŽ
["fo"ã "foo"ã "barfoo"ã "foobar"ã "foob"]
=> ["fo"ã ""ã "bar"ã "foobar"ã "foob"]
ççºãã
å ¥åæååãæååã®ã³ãŒããã€ã³ãçªå·ã®é åã«å€æããŸãã
jqãççºã
ãfoobarã
=> [102,111,111,98,97,114]
ççž®ãã
ççºã®éã
jqãimplodeã
[65ã66ã67]
=>ãABCã
split
ã»ãã¬ãŒã¿åŒæ°ã§å ¥åæååãåå²ããŸãã
jqÂŽsplitïŒ "ã"ïŒ ÂŽ
ãaãbãcãdãeãã
=> ["a"ã "bãcãd"ã "e"ã ""]
joinïŒstrïŒ
åŒæ°ãåºåãæåãšããŠäœ¿çšããŠãå ¥åãšããŠæå®ãããèŠçŽ ã®é åãçµåããŸãã ããã¯
ã®é splitïŒã€ãŸããå®è¡äž splitïŒ "foo"ïŒ | joinïŒ "foo"ïŒ ä»»æã®å ¥åæååã«å¯ŸããŠ
äžèšã®å ¥åæååãè¿ããŸãã
jqÂŽjoinïŒ "ã"ïŒ ÂŽ
["a"ã "bãcãd"ã "e"]
=> "aãbãcãdãe"
ascii_downcaseã ascii_upcase
ã¢ã«ãã¡ãããæåïŒazããã³AZïŒã次ã®ããã«å€æããå ¥åæååã®ã³ããŒãçºè¡ããŸãã
æå®ãããã±ãŒã¹ã
whileïŒcond; æŽæ°ïŒ
ã whileïŒcond; æŽæ°ïŒ é¢æ°ã䜿çšãããšãæŽæ°ãç¹°ãè¿ãé©çšã§ããŸã . ãŸã§ æ¡ä»¶
ã¯åœã§ãã
泚æããŠãã ãã whileïŒcond; æŽæ°ïŒ å éšçã«ã¯ååž°çãªjqé¢æ°ãšããŠå®çŸ©ãããŠããŸãã ååž°ç
å ã®åŒã³åºã while 次ã®å Žåãè¿œå ã®ã¡ã¢ãªãæ¶è²»ããŸãã update æ倧ã§XNUMXã€ãçæããŸã
åå ¥åã®åºåã 以äžã®é«åºŠãªãããã¯ãåç §ããŠãã ããã
jqÂŽ [whileïŒã<100;ã* 2ïŒ] ÂŽ
1
=> [1,2,4,8,16,32,64]
untilïŒcond; 次ïŒ
ã untilïŒcond; æ¬¡ïŒ é¢æ°ã䜿çšãããšãåŒãç¹°ãè¿ãé©çšã§ããŸã 次ã®,
æåã« . ãã®åŸãç¬èªã®åºåã« æ¡ä»¶ æ¬åœã§ãã ããšãã°ãããã䜿çšã§ããŸã
éä¹é¢æ°ãå®è£ ããŸãïŒä»¥äžãåç §ïŒã
泚æããŠãã ãã untilïŒcond; æ¬¡ïŒ å éšçã«ã¯ååž°çãªjqé¢æ°ãšããŠå®çŸ©ãããŠããŸãã ååž°ç
å ã®åŒã³åºã ãããŸã§ïŒïŒ 次ã®å Žåãè¿œå ã®ã¡ã¢ãªãæ¶è²»ããŸãã 次㮠æ倧ã§XNUMXã€ãçæããŸã
åå ¥åã®åºåã 以äžã®é«åºŠãªãããã¯ãåç §ããŠãã ããã
jqÂŽ [ãã1] | untilïŒã[0] <1; [ã[0] -1ãã[1] *ã[0]]ïŒ|ã[1] ÂŽ
4
=> 24
recurseïŒfïŒã ååž°ã recurseïŒf; 調åïŒã ååž°_ããŠã³
ã recurseïŒfïŒ é¢æ°ã䜿çšãããšãååž°æ§é ãæ€çŽ¢ããŠæœåºã§ããŸã
ãã¹ãŠã®ã¬ãã«ããã®èå³æ·±ãããŒã¿ã å ¥åããã¡ã€ã«ã·ã¹ãã ãè¡šããšä»®å®ããŸãã
{"åå"ïŒ "/"ã "åäŸ"ïŒ[
{"åå"ïŒ "/ binã«"ã "åäŸé"ïŒ [
{"åå"ïŒ "/ bin / ls"ã "åäŸé"ïŒ []}ã
{"åå"ïŒ "/bin/sh"ã "åäŸé"ïŒ []}]}ã
{"åå"ïŒ "/ããŒã "ã "åäŸé"ïŒ [
{"åå"ïŒ "/ home / stephen"ã "åäŸ"ïŒ[
{"name"ïŒ "/ home / stephen / jq"ã "children"ïŒ[]}]}]}]}
ããã§ãååšãããã¹ãŠã®ãã¡ã€ã«åãæœåºãããšããŸãã ååŸããå¿ èŠããããŸã .nameã®,
.children []ãname, .children []ãchildren []ãnameã çã ã ããã¯æ¬¡ã®æ¹æ³ã§å®è¡ã§ããŸãã
recurseïŒ.children []ïŒ| ãåå
åŒæ°ãªãã§åŒã³åºãããå Žåã ååž° ã«çžåœããŸã recurseïŒã[]ïŒïŒ.
recurseïŒfïŒ ãšåãã§ã recurseïŒf; . != ãã«ïŒ å¿é ããããšãªã䜿çšã§ããŸã
ååž°ã®æ·±ãã
recurseïŒf; ç¶æ ïŒ ãæŸåºããããšããå§ãŸããžã§ãã¬ãŒã¿ã§ãã ãã®åŸãé çªã«æŸåºããŸã
ã| f ãã | f | f ãã | f | f | fã...èšç®å€ãæ¡ä»¶ãæºããéãã ã«ãšã£ãŠ
ããšãã°ããã¹ãŠã®æŽæ°ãçæããã«ã¯ãå°ãªããšãååãšããŠã次ã®ããã«æžãããšãã§ããŸãã recurseïŒã+ 1;
çïŒ.
åŸæ¥ã®çç±ã§ã ååž°_ããŠã³ åŒã³åºãã®ãšã€ãªã¢ã¹ãšããŠååšããŸã ååž° åŒæ°ãªãã
ãã®ãšã€ãªã¢ã¹ã¯èæ ®ãããŸã éæšå¥šã® 次ã®ã¡ãžã£ãŒãªãªãŒã¹ã§åé€ãããŸãã
ã®ååž°åŒã³åºã ååž° ãã€ã§ãè¿œå ã®ã¡ã¢ãªãæ¶è²»ããŸãã f ã§çç£
åå ¥åã«å¯ŸããŠã»ãšãã©åäžã®åºåã
jqÂŽrecurseïŒ.foo []ïŒ ÂŽ
{"foo"ïŒ[{"foo"ïŒ[]}ã{"foo"ïŒ[{"foo"ïŒ[]}]}]}
=> {"foo"ïŒ[{"foo"ïŒ[]}ã{"foo"ïŒ[{"foo"ïŒ[]}]}]}ã{"foo"ïŒ[]}ã{"foo"ïŒ [{"foo"ïŒ[]}]}ã{"foo"ïŒ[]}
jqãrecurseã
{"a"ïŒ0ã "b"ïŒ[1]}
=> {"a"ïŒ0ã "b"ïŒ[1]}ã0ã[1]ã1
jqÂŽrecurseïŒã*ã;ã<20ïŒ ÂŽ
2
=> 2ã4ã16
..
ã®çç¥åœ¢ ååž° åŒæ°ãªãã ããã¯ãXPathã«äŒŒããããšãç®çãšããŠããŸã //
ãªãã¬ãŒã¿ãŒã ãäºæ¿ãã ãã ..ãš åäœããŸãã; 䜿çšãã .. | a 代ããã¯ã 以äžã®äŸã§ã¯ã
.. | .aïŒ ãäžãã«ãããªããžã§ã¯ãã®ãªããžã§ã¯ãããŒãaãã®ãã¹ãŠã®å€ãèŠã€ããã«ã¯ ..
jqÂŽ .. | .aïŒ ÂŽ
[[{"a"ïŒ1}]]
=> 1
env
jqã®ç°å¢ãè¡šããªããžã§ã¯ããåºåããŸãã
jqÂŽenv.PAGERÂŽ
ãã«
=>ãå°ãªãã
転眮
ã®ã¶ã®ã¶ã®å¯èœæ§ã®ããè¡åïŒé åã®é åïŒã転眮ããŸãã è¡ã«ã¯nullãåã蟌ãŸããããã
çµæã¯åžžã«é·æ¹åœ¢ã§ãã
jqã転眮ã
[[1]ã[2,3]]
=> [[1,2]ã[nullã3]]
bsearchïŒxïŒ
bsearchïŒxïŒã¯ãå ¥åé åå ã®xã®äºåæ¢çŽ¢ãå®è¡ããŸãã å ¥åããœãŒããããŠããå Žå
xãå«ãŸããŠããå ŽåãbsearchïŒxïŒã¯é åå ã®ã€ã³ããã¯ã¹ãè¿ããŸãã ãã以å€ã®å Žåãé åã
䞊ã¹æ¿ãããšãïŒ-1-ixïŒãè¿ãããŸããããã§ãixã¯ãé åã
ixã«xãæ¿å ¥ããåŸããœãŒããããŸãã é åããœãŒããããŠããªãå ŽåãbsearchïŒxïŒ
ããããé¢å¿ã®ãªãæŽæ°ãè¿ããŸãã
jqÂŽbãµãŒãïŒ0ïŒ ÂŽ
ã0,1]
=> 0
jqÂŽbãµãŒãïŒ0ïŒ ÂŽ
ã1,2,3]
=> -1
jqÂŽbãµãŒãïŒ4ïŒ$ ixãšããŠ| $ ix <0ã®å Žåã[-ïŒ1 + $ ixïŒ] = 4elseã çµãã
ã1,2,3]
=> [1,2,3,4]
æåå è£é - \ïŒfooïŒ
æååå ã§ã¯ãããã¯ã¹ã©ãã·ã¥ã®åŸã«åŒãparenså ã«é 眮ã§ããŸãã äœã§ã
åŒã®æ»ãå€ã¯æååã«è£éãããŸãã
jqÂŽ "å ¥åã¯\ïŒãïŒã§ãããããã¯\ïŒã+ 1ïŒããXNUMXã€å°ãªãã§ã" ÂŽ
42
=>ãå ¥åã¯42ã§ãããããã¯43ããXNUMXã€å°ãªãã§ãã
å€æ ãž/ãã JSONã®
ã ããžãœã³ & fromjson ãã«ãã€ã³ã¯å€ãJSONããã¹ããšããŠãã³ãããããJSONããã¹ãã解æããŠ
ããããå€ã tojsonãã«ãã€ã³ã¯ãtostringãè¿ããšããç¹ã§tostringãšã¯ç°ãªããŸãã
æååã¯å€æŽãããŸããããtojsonã¯æååãJSONæååãšããŠãšã³ã³ãŒãããŸãã
jqÂŽ [ã[] | tostring] ÂŽ
[1ã "foo"ã["foo"]]
=> ["1"ã "foo"ã "[\" foo \ "]"]
jqÂŽ [ã[] | tojson] ÂŽ
[1ã "foo"ã["foo"]]
=> ["1"ã "\" foo \ ""ã "[\" foo \ "]"]
jqÂŽ [ã[] | tojson | fromjson] ÂŽ
[1ã "foo"ã["foo"]]
=> [1ã "foo"ã["foo"]]
ãã©ãŒããã ã¹ããªã³ã° & éãã
ã @ã㌠æ§æã¯ãæååã®ãã©ãŒããããšãšã¹ã±ãŒãã«äœ¿çšãããŸããããã¯ãURLã®æ§ç¯ã«åœ¹ç«ã¡ãŸãã
HTMLãXMLãªã©ã®èšèªã®ããã¥ã¡ã³ãã @ã㌠äžã®ãã£ã«ã¿ãŒãšããŠäœ¿çšã§ããŸã
ããèªäœãå¯èœãªãšã¹ã±ãŒãã¯æ¬¡ã®ãšããã§ãã
@æç« :
ã³ãŒââã« ã²ãã詳现ã«ã€ããŠã¯ããã®é¢æ°ãåç §ããŠãã ããã
@json:
å ¥åãJSONãšããŠã·ãªã¢ã«åããŸãã
@html:
æåããããã³ã°ããããšã«ãããHTML / XMLãšã¹ã±ãŒããé©çšããŸã <>ïŒ ÂŽ" 圌ãã®å®äœã«
åçç© <, >, ãš, ', ã.
@uri:
ãã¹ãŠã®äºçŽæžã¿URIæåãã«ãããã³ã°ããããšã«ãããããŒã»ã³ããšã³ã³ãŒããé©çšããŸã ïŒ XX ã·ãŒã±ã³ã¹ã
@csv:
å ¥åã¯é åã§ããå¿ èŠããããäºéåŒçšç¬Šä»ãã®CSVãšããŠã¬ã³ããªã³ã°ãããŸãã
æååãããã³åŒçšç¬Šã¯ç¹°ãè¿ãã«ãã£ãŠãšã¹ã±ãŒããããŸãã
@tsv:
å ¥åã¯é åã§ããå¿ èŠããããTSVïŒã¿ãåºåãå€ïŒãšããŠã¬ã³ããªã³ã°ãããŸãã å
å ¥åé åã¯XNUMXè¡ã§åºåãããŸãã ãã£ãŒã«ãã¯åäžã®ã¿ãã§åºåãããŸã
ïŒASCII 0x09ïŒã å ¥åæåã®æ¹è¡ïŒASCII 0x0aïŒããã£ãªããžãªã¿ãŒã³ïŒASCII
0x0dïŒãã¿ãïŒASCII 0x09ïŒããã³ããã¯ã¹ã©ãã·ã¥ïŒASCII 0x5cïŒãšã¹ã±ãŒããšããŠåºåãããŸã
ã·ãŒã±ã³ã¹ \n, \r, \t, \\ ã
@sh:
å ¥åã¯ãPOSIXã·ã§ã«ã®ã³ãã³ãã©ã€ã³ã§ã®äœ¿çšã«é©ãã圢ã§ãšã¹ã±ãŒããããŸãã ã®å Žå
å ¥åã¯é åã§ãããåºåã¯äžé£ã®ã¹ããŒã¹ã§åºåãããæååã«ãªããŸãã
@ base64:
å ¥åã¯ãRFC64ã§æå®ãããŠããbase4648ã«å€æãããŸãã
ãã®æ§æã¯ã䟿å©ãªæ¹æ³ã§æååè£éãšçµã¿åãããããšãã§ããŸãã ããªãã¯ãã©ããŒããããšãã§ããŸã
@ã㌠æååãªãã©ã«ãå«ãããŒã¯ã³ã æååãªãã©ã«ã®å 容㯠éããã
ãã ãããã®æååãªãã©ã«å ã§è¡ããããã¹ãŠã®è£éã¯ãšã¹ã±ãŒããããŸãã äŸãã°ã
@uri "https://www.google.com/search?q=\(.searchïŒ"
å ¥åã«å¯ŸããŠæ¬¡ã®åºåãçæããŸã {"æ€çŽ¢"ïŒ "äœ is jqïŒ "}:
ãhttps://www.google.com/search?q=what%20is%20jq%3Fã
URLã®ã¹ã©ãã·ã¥ãçå笊ãªã©ã¯äžéšã§ããããããšã¹ã±ãŒããããªãããšã«æ³šæããŠãã ããã
æååãªãã©ã«ã®ã
jqÂŽ @ htmlÂŽ
ãããã¯x <yã®å Žåã«æ©èœããŸãã
=> "ããã¯x <yã®å Žåã«æ©èœããŸã"
jqÂŽ @ sh "echo \ïŒãïŒ" ÂŽ
ããªãã©ãšãŒã«ã
=> "echoÂŽOÂŽ \\ÂŽÂŽHaraÂŽ \\ÂŽÂŽs AleÂŽ"
è©Šåæ¥
jqã¯ãããã€ãã®åºæ¬çãªæ¥ä»åŠçæ©èœãšãããã€ãã®é«ã¬ãã«ããã³äœã¬ãã«ãæäŸããŸã
ãã«ãã€ã³ã ãã¹ãŠã®å Žåã«ãããŠããããã®ãã«ãã€ã³ã¯UTCã®æå»ã®ã¿ãåŠçããŸãã
ã fromdateiso8601 ãã«ãã€ã³ã¯ãISO8601圢åŒã®æ¥æãç§æ°ã«è§£æããŸã
Unixãšããã¯ïŒ1970-01-01T00ïŒ00ïŒ00ZïŒä»¥éã The ä»æ¥iso8601 ãã«ãã€ã³ã¯ãã®éãè¡ããŸãã
ã æ¥ä»ãã ãã«ãã€ã³ã¯æ¥ææååã解æããŸãã çŸåš æ¥ä»ãã ISO8601ã®ã¿ããµããŒã
æ¥ææååã§ãããå°æ¥çã«ã¯ãããå€ãã®æ¥ææååã解æããããšããŸã
ãã©ãŒãããã
ã çŸåšãŸã§ ãã«ãã€ã³ã¯ã®ãšã€ãªã¢ã¹ã§ã ä»æ¥iso8601.
ã ä» ãã«ãã€ã³ã¯ãUnixãšããã¯ããã®çŸåšã®æå»ãç§åäœã§åºåããŸãã
Cã©ã€ãã©ãªã®æéé¢æ°ãžã®äœã¬ãã«ã®jqã€ã³ã¿ãŒãã§ã€ã¹ãæäŸãããŠããŸãã strptime,
ã¹ãã©ãã¿ã€ã , ãšã ã¯ã¿ã€ã , ã°ã©ã ã¿ã€ã ã ã«ã€ããŠã¯ããã¹ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®ããã¥ã¡ã³ããåç §ããŠãã ããã
ã«ãã£ãŠäœ¿çšããããã©ãŒãããæåå strptime & ã¹ãã©ãã¿ã€ã ã 泚ïŒãããã¯å¿ ãããå®å®ããŠãããšã¯éããŸãã
ç¹ã«ããŒã«ãªãŒãŒã·ã§ã³æ©èœã«é¢ããŠãjqã®ã€ã³ã¿ãŒãã§ãŒã¹ã
ã ã°ã©ã ã¿ã€ã ãã«ãã€ã³ã¯Unixãšããã¯ããæ°ç§ãæ¶è²»ãããå£ããããåºåããŸã
ããŠã³ã¿ã€ã ããè¡šãæ°å€ã®é åãšããŠã®æéã®è¡šçŸïŒãã®é åºã§ïŒïŒ
幎ãæïŒãŒãããŒã¹ïŒãæã®æ¥ãæéãå
æéãç§ãææ¥ãããã³å¹Žã®æ¥-ãã¹ãŠ
ç¹ã«æèšãããŠããªãéããXNUMXããŒã¹ã
ã ãšã ã¯ã¿ã€ã ãã«ãã€ã³ã¯ãã«ãã£ãŠåºåãããæéã®ãå解ãããæéãè¡šçŸãæ¶è²»ããŸã ã°ã©ã ã¿ã€ã
& strptime.
ã strptimeïŒfmtïŒ ãã«ãã€ã³ã¯ãã«äžèŽããå ¥åæååã解æããŸã FMT å£è«ã åºåã¯ã«ãããŸã
ã«ãã£ãŠæ¶è²»ããããæ éæéãè¡šçŸ ã°ã©ã ã¿ã€ã ãšåºå ãšã ã¯ã¿ã€ã .
ã strftimeïŒfmtïŒ ãã«ãã€ã³ã¯ãæå®ããã圢åŒã§æå»ããã©ãŒãããããŸãã
ã®ãã©ãŒãããæåå strptime & ã¹ãã©ãã¿ã€ã å žåçãªCã©ã€ãã©ãªã§èª¬æãããŠããŸã
ããã¥ã¡ã³ããŒã·ã§ã³ã ISO8601æ¥æã®ãã©ãŒãããæååã¯æ¬¡ã®ãšããã§ãã "ïŒ Y-ïŒ m-ïŒ dTïŒ HïŒïŒ MïŒïŒ SZ".
jqã¯ãäžéšã®ã·ã¹ãã ã§ãã®æ¥ä»æ©èœã®äžéšãŸãã¯ãã¹ãŠããµããŒãããªãå ŽåããããŸãã
jqãfromdateã
"2015-03-05T23:51:47Z"
=> 1425599507
jqÂŽstrptimeïŒ "ïŒ Y-ïŒ m-ïŒ dTïŒ HïŒïŒ MïŒïŒ SZ"ïŒ ÂŽ
"2015-03-05T23:51:47Z"
=> [2015,2,5,23,51,47,4,63]
jqÂŽstrptimeïŒ "ïŒ Y-ïŒ m-ïŒ dTïŒ HïŒïŒ MïŒïŒ SZ"ïŒ| mktimeÂŽ
"2015-03-05T23:51:47Z"
=> 1425599507
æ¡ä»¶ ãã㊠æ¯èŒ
==ã !=
åŒãa == bãã¯ãaãšbã®çµæãçããå ŽåïŒã€ãŸãã
ããããåçã®JSONããã¥ã¡ã³ããè¡šãå ŽåïŒããã以å€ã®å Žåã¯ãfalseãã ç¹ã«ãæåå
æ°å€ãšçãããšã¯èŠãªãããŸããã Javascriptã䜿çšããŠããå ŽåãjqÂŽs ==ã¯æ¬¡ã®ããã«ãªããŸãã
Javascriptã®===-å€ãåãã§ããå Žåã«ã®ã¿çããå€ãèæ ®ããŸã
åãå€ã
ïŒ=ã¯ãçãããªããã§ãããÂŽaïŒ= bÂŽã¯ÂŽa == bÂŽã®å察ã®å€ãè¿ããŸãã
jqÂŽã[] == 1ÂŽ
[1ã1.0ã "1"ã "ããã"]
=> trueãtrueãfalseãfalse
if-then-else
if A ãã®åŸ B ã»ãã« C end ãšåãããã«åäœããŸã B if A falseãŸãã¯
nullã§ãããåãããã«åäœããŸã C ãããªããšã
falseãŸãã¯nullã®ãã§ãã¯ã¯ãJavascriptã«èŠããããããåçŽãªãçå®æ§ãã®æŠå¿µã§ãã
ãŸãã¯Pythonã§ãããæ¡ä»¶ã«ã€ããŠããæ確ã«ããå¿ èŠãããå Žåãããããšãæå³ããŸã
ããªããæãïŒäŸãã°ãæååã空ã§ãããã©ããããã¹ãããããšã¯ã§ããŸãã if .nameã® ãã®åŸ A ã»ãã« B end,
ããªãã¯ãã£ãšäŒŒããããªãã®ãå¿ èŠã«ãªããŸã if ïŒãåå | é·ãïŒ > 0 ãã®åŸ A ã»ãã« B end ã代ããã«ã䜿ããã ããã
æ¡ä»¶Aãè€æ°ã®çµæãçæããå Žåããããã®ããããããçãã§ãããšèŠãªãããŸã
çµæã¯falseãŸãã¯nullã§ã¯ãããŸããã çµæããŒãã®å Žåãããã¯èª€ããšèŠãªãããŸãã
䜿çšããŠããå Žåã¯ãããã«å€ãã®ã±ãŒã¹ãè¿œå ã§ããŸã elif A ãã®åŸ B æ§æã
jqÂŽifã == 0ãã®åŸ
ããŒããelifã == 1 then "one" else "many" endÂŽ 2 => "many"
>, > =ã <=ã <
æ¯èŒæŒç®å >, >=, <=, < å·Šã®åŒæ°ããã倧ãããã©ãããè¿ããŸãã
æ£ããåŒæ°ä»¥äžã以äžããŸãã¯ä»¥äž
ïŒããããïŒã
é åºã¯ãã«ã€ããŠèª¬æãããã®ãšåãã§ãã sortãäžèšã
jqÂŽã <5ÂŽ
2
=> true
ããã³/ãŸãã¯/
jqã¯ãéåžžã®ããŒã«æŒç®åããã³/ãŸãã¯notããµããŒãããŸãã 圌ãã¯åãçå®ã®åºæºãæã£ãŠããŸã
åŒ-falseãšnullã¯ãfalseå€ããšèŠãªããããã以å€ã¯
"æ¬åœã®äŸ¡å€"ã
ãããã®æŒç®åã®XNUMXã€ã®ãªãã©ã³ããè€æ°ã®çµæãçæããå ŽåãæŒç®åèªäœ
å ¥åããšã«çµæãçæãããŸãã
å®éã«ã¯ãæŒç®åã§ã¯ãªãçµã¿èŸŒã¿é¢æ°ã§ããããããã£ã«ã¿ãŒãšããŠåŒã³åºãããŸãã
ã®ããã«ãç¹å¥ãªæ§æã§ã¯ãªãããã€ãã§ãããã® .foo & ãã㌠| .
ãããã®XNUMXã€ã¯ããtrueããšãfalseãã®å€ã®ã¿ãçæãããããæ¬ç©ã®å Žåã«ã®ã¿åœ¹ç«ã¡ãŸãã
ã®äžè¬çãªPerl / Python / Rubyã€ãã£ãªã ã§ã¯ãªããããŒã«æŒç®
ãvalue_that_may_be_nullãŸãã¯ããã©ã«ããã ãã®åœ¢åŒã®ããŸãã¯ãã䜿çšããå Žåã¯ã
æ¡ä»¶ãè©äŸ¡ããã®ã§ã¯ãªããXNUMXã€ã®å€ã«ã€ããŠã¯ã以äžã®ã//ãæŒç®åãåç §ããŠãã ããã
jq ÂŽ42ãšãæååã ÂŽ
ãã«
=> true
jqÂŽïŒtrueãfalseïŒãŸãã¯falseÂŽ
ãã«
=>çãåœ
jqÂŽïŒtrueãtrueïŒããã³ïŒtrueãfalseïŒ ÂŽ
ãã«
=> trueãfalseãtrueãfalse
jqÂŽ [trueãfalse | ããã
ãã«
=> [falseãtrue]
Alternative ãªãã¬ãŒã¿ - //
ãã©ãŒã ã®ãã£ã«ã¿ãŒ a // b ãšåãçµæãçæããŸã aããã a ãã®ä»ã®çµæãçæããŸã
ãã false & ãã«ã ãããªããšã a // b ãšåãçµæãçæããŸã b.
ããã¯ãããã©ã«ããæäŸããã®ã«åœ¹ç«ã¡ãŸãã .foo // 1 ã«è©äŸ¡ãããŸã 1 ãªãå Žå .foo
å ¥åã®èŠçŽ ã ããã¯ã©ã®ããã«äŒŒãŠããŸã or Pythonã§äœ¿çšãããããšããããŸãïŒjqÂŽs or ãªãã¬ãŒã¿
å³å¯ã«ããŒã«æŒç®çšã«äºçŽãããŠããŸãïŒã
jqÂŽ.foo // 42ÂŽ
{"foo"ïŒ19}
=> 19
jqÂŽ.foo // 42ÂŽ
{}
=> 42
ãã©ã€ãã£ãã
ã䜿çšããŠãšã©ãŒããã£ããã§ããŸã è©ŠããŸã EXP ãã£ãã EXPã æåã®åŒãå®è¡ããã
倱æãããšãXNUMXçªç®ããšã©ãŒã¡ãã»ãŒãžãšãšãã«å®è¡ãããŸãã ãã³ãã©ãŒã®åºåïŒ
anyã¯ãè©Šè¡ããåŒã®åºåã§ãããã®ããã«åºåãããŸãã
ã è©ŠããŸã EXP ãã©ãŒã ã®äœ¿çš 空㮠äŸå€ãã³ãã©ãšããŠã
jqÂŽtry .a catch "ãisnota object" ÂŽ
true
=>ããã¯ãªããžã§ã¯ãã§ã¯ãããŸããã
jqÂŽ [ã[] | try .a] ÂŽ
[{}ãtrueã{"a"ïŒ1}]
=> [nullã1]
jqÂŽtry errorïŒ "some exception"ïŒcatch .ÂŽ
true
=>ãããã€ãã®äŸå€ã
ç Žå£ ã§ã of ã³ã³ãããŒã« æ§é
try / catchã®äŸ¿å©ãªäœ¿çšæ³ã¯ã次ã®ãããªå¶åŸ¡æ§é ããæãåºãããšã§ãã æžãããŸã, foreachã®,
whileããªã©ãªã©ã
äŸïŒ
ïŒãbreakããçºçãããŸã§åŒãç¹°ãè¿ããŸã
ïŒãšã©ãŒãçºçãããããšã©ãŒãåçºçãããã«ç¹°ãè¿ããåæ¢ããŸãã
ïŒãããããã£ããããããšã©ãŒãããã¬ãŒã¯ãã§ãªãå Žåã¯ããããåçºçãããŸãã
repeatïŒexpïŒcatchã== "break"ãè©ŠããŠãããelseãšã©ãŒã空ã«ããŠãã ããã
jqã«ã¯ãååä»ãåå¥ã©ãã«ãããã¬ãŒã¯ããŸãã¯ã移åïŒæ»ãïŒãããããã®æ§æããããŸãã
ã©ãã«$ out | ... $ outãç Žã..ã
ã ç Žã $ label_name åŒã«ãããããã°ã©ã ã¯æãè¿ããã®ã®ããã«åäœããŸã
ïŒå·Šã®æ¹ã§ãïŒ ã©ãã« $ label_name çç£ ç©ºã®.
ãšã®é¢ä¿ ç Žã 察å¿ãã ã©ãã« åå¥ã§ãïŒã©ãã«ã¯
äŒæ©ãããèŠãããã
ããæãåºãã«ã¯ æžãããŸãããšãã°ã次ã®
ã©ãã«$ out | ã[]ã$ itemãšããŠåæžããŸãïŒnull;ã== falseã®å Žåã¯$ outããã¬ãŒã¯ããŸãelse ... endïŒ
次ã®jqããã°ã©ã ã¯ãæ§æãšã©ãŒãçæããŸãã
$ outãç Žã
ã©ãã«ããªãã®ã§ $ out èŠããŸãã
? ãªãã¬ãŒã¿
ã ? æŒç®åããšããŠäœ¿çš EXPïŒãã¯ã®çç¥åœ¢ã§ã è©ŠããŸã EXP.
jqÂŽ [ã[] |ïŒ.aïŒïŒ] ÂŽ
[{}ãtrueã{"a"ïŒ1}]
=> [nullã1]
REGULAR è¡šçŸ ïŒPCREïŒ
jqã¯ãphpãrubyãTextMateãSublime Textã
ãªã©ãªã®ã§ãããã§ã®èª¬æã¯jqã®è©³çŽ°ã«çŠç¹ãåœãŠãŸãã
jqæ£èŠè¡šçŸãã£ã«ã¿ãŒã¯ã次ã®ããããã®ãã¿ãŒã³ã䜿çšããŠäœ¿çšã§ããããã«å®çŸ©ãããŠããŸãã
æåå| FILTERïŒæ£èŠè¡šçŸïŒ
æåå| FILTERïŒæ£èŠè¡šçŸ;ãã©ã°ïŒ
æåå| FILTERïŒ[æ£èŠè¡šçŸ]ïŒ
æåå| FILTERïŒ[æ£èŠè¡šçŸããã©ã°]ïŒ
ããã§ã* STRINGãREGEXãããã³FLAGSã¯jqæååã§ãããjqæååè£éã®å¯Ÿè±¡ã§ãã *
æååè£éåŸã®REGEXã¯ãæå¹ãªPCREæ£èŠè¡šçŸã§ããå¿ èŠããããŸãã * FILTER㯠test,
match ãŸã㯠ãã£ããã£ãŒã以äžã«èª¬æããŸãã
FLAGSã¯ããµããŒããããŠãããã©ã°ã®XNUMXã€ä»¥äžã§æ§æãããæååã§ãã
· g -ã°ããŒãã«æ€çŽ¢ïŒæåã®äžèŽã ãã§ãªãããã¹ãŠã®äžèŽãæ€çŽ¢ïŒ
· i -倧æåãšå°æåãåºå¥ããªãæ€çŽ¢
· m -ãã«ãã©ã€ã³ã¢ãŒãïŒÂŽ.ÂŽã¯æ¹è¡ã«äžèŽããŸãïŒ
· n -空ã®äžèŽãç¡èŠããŸã
· p -sã¢ãŒããšmã¢ãŒãã®äž¡æ¹ãæå¹ã«ãªã£ãŠãã
· s -åç·ã¢ãŒãïŒ ÂŽ^ÂŽ->ÂŽ \ AÂŽã ÂŽ$ÂŽ->ÂŽ \ ZÂŽïŒ
· l -å¯èœãªéãé·ãäžèŽãèŠã€ãã
· x -æ¡åŒµæ£èŠè¡šçŸåœ¢åŒïŒç©ºçœãšã³ã¡ã³ããç¡èŠïŒ
xãã¿ãŒã³ã®ç©ºçœãäžèŽãããã«ã¯ã\ sãªã©ã®ãšã¹ã±ãŒãã䜿çšããŸãã
ã»testïŒ "a \ sb"ã "x"ïŒã
ç¹å®ã®ãã©ã°ãREGEXå ã§æå®ã§ããããšã«æ³šæããŠãã ããã
ã»jq -nÂŽïŒ "test"ã "TEst"ã "teST"ã "TEST"ïŒ| testïŒ "ïŒïŒiïŒteïŒïŒ-iïŒst"ïŒ ÂŽ
è©äŸ¡ïŒtrueãtrueãfalseãfalseã
[å¿ èŠ 1.5] testïŒvalïŒã testïŒæ£èŠè¡šçŸ; ãã©ã°ïŒ
ããã match ããã ããäžèŽãªããžã§ã¯ãã¯è¿ããŸããã true or false ãã©ããã®ããã«
æ£èŠè¡šçŸã¯å ¥åãšäžèŽããŸãã
jqÂŽtestïŒ "foo"ïŒ ÂŽ
ãããŒã
=> true
jqÂŽã[] | testïŒ "abcïŒã¹ããŒã¹ã¯ç¡èŠãããŸã"; "ix"ïŒ ÂŽ
["xabcd"ã "ABC"]
=>çãç
[å¿ èŠ 1.5] matchïŒvalïŒã matchïŒæ£èŠè¡šçŸ; ãã©ã°ïŒ
match èŠã€ãã£ãäžèŽããšã«ãªããžã§ã¯ããåºåããŸãã äžèŽã«ã¯æ¬¡ã®ãã£ãŒã«ãããããŸãã
· ãªãã»ãã -å ¥åã®å é ããã®UTF-8ã³ãŒããã€ã³ãã®ãªãã»ãã
· é·ã -äžèŽã®UTF-8ã³ãŒããã€ã³ãã®é·ã
· æåå -äžèŽããæåå
· ãã£ãã㣠-ãã£ããã£ã°ã«ãŒããè¡šããªããžã§ã¯ãã®é åã
ã°ã«ãŒããªããžã§ã¯ãã®ãã£ããã£ã«ã¯ã次ã®ãã£ãŒã«ãããããŸãã
· ãªãã»ãã -å ¥åã®å é ããã®UTF-8ã³ãŒããã€ã³ãã®ãªãã»ãã
· é·ã -ãã®ãã£ããã£ã°ã«ãŒãã®UTF-8ã³ãŒããã€ã³ãã®é·ã
· æåå -ãã£ããã£ãããæåå
· å -ãã£ããã£ã°ã«ãŒãã®ååïŒãŸã㯠ãã« ååããªãå ŽåïŒ
äœã«ãäžèŽããªãã£ãã°ã«ãŒãããã£ããã£ãããšã-1ã®ãªãã»ãããè¿ãããŸã
jqÂŽmatchïŒ "ïŒabcïŒ+"; "g"ïŒ ÂŽ
ãabcabcã
=> {"offset"ïŒ0ã "length"ïŒ3ã "string"ïŒ "abc"ã "captures"ïŒ[{"offset"ïŒ0ã "length"ïŒ3ã "string"ïŒ "abc"ã " name "ïŒnull}]}ã{" offset "ïŒ4ã" length "ïŒ3ã" string "ïŒ" abc "ã" captions "ïŒ[{" offset "ïŒ4ã" length "ïŒ3ã" string " ïŒ "abc"ã "name"ïŒnull}]}
jqÂŽmatchïŒ "foo"ïŒ ÂŽ
ãfoobarfooã
=> {"offset"ïŒ0ã "length"ïŒ3ã "string"ïŒ "foo"ã "captures"ïŒ[]}
jqÂŽmatchïŒ["foo"ã "ig"]ïŒ ÂŽ
ãfoobarFOOã
=> {"offset"ïŒ0ã "length"ïŒ3ã "string"ïŒ "foo"ã "captures"ïŒ[]}ã{"offset"ïŒ8ã "length"ïŒ3ã "string"ïŒ "FOO "ã"ãã£ãã㣠"ïŒ[]}
jqÂŽmatchïŒ "fooïŒïŒ ããŒïŒïŒ foo ";" ig "ïŒ ÂŽ
ãfoobarfoo foofooã
=> {"offset"ïŒ0ã "length"ïŒ11ã "string"ïŒ "foo bar foo"ã "captures"ïŒ[{"offset"ïŒ4ã "length"ïŒ3ã "string"ïŒ "bar" ã "name"ïŒ "bar123"}]}ã{"offset"ïŒ12ã "length"ïŒ8ã "string"ïŒ "foo foo"ã "captures"ïŒ[{"offset"ïŒ-1ã "length" ïŒ0ã "æåå"ïŒnullã "åå"ïŒ "bar123"}]}
jqÂŽ [matchïŒ "ã"; "g"ïŒ] | é·ã
ãabcã
=> 3
[å¿ èŠ 1.5] ãã£ããã£ïŒvalïŒã ãã£ããã£ïŒæ£èŠè¡šçŸ; ãã©ã°ïŒ
ååä»ããã£ããã£ãJSONãªããžã§ã¯ãã«åéããåãã£ããã£ã®ååãããŒãšããŠã
察å¿ããå€ãšããŠäžèŽããæååã
jqÂŽcaptureïŒ "ïŒïŒ [az] +ïŒ-ïŒïŒ [0-9] +ïŒ "ïŒ ÂŽ
ãxyzzy-14ã
=> {"a"ïŒ "xyzzy"ã "n"ïŒ "14"}
[å¿ èŠ 1.5] scanïŒregexïŒã scanïŒregex; ãã©ã°ïŒ
ã®æ£èŠè¡šçŸã«äžèŽããå ¥åã®éè€ããªããµãã¹ããªã³ã°ã®ã¹ããªãŒã ãåºåããŸã
ãã©ã°ãæå®ãããŠããå Žåã¯ããã©ã°ã«åŸããŸãã äžèŽãããã®ããªãå Žåãã¹ããªãŒã ã¯
空ã®ã åå ¥åæååã®ãã¹ãŠã®äžèŽããã£ããã£ããã«ã¯ãã€ãã£ãªã ã䜿çšããŸã [ åŒ ]ãäŸãã° [
scanïŒregexïŒ ].
splitïŒæ£èŠè¡šçŸ; ãã©ã°ïŒ
äžäœäºææ§ã®ããã«ã split æ£èŠè¡šçŸã§ã¯ãªããæååã§åå²ããŸãã
[å¿ èŠ 1.5] åå²ïŒæ£èŠè¡šçŸïŒã splitsïŒæ£èŠè¡šçŸ; ãã©ã°ïŒ
ãããã¯åœŒããšåãçµæãæäŸããŸã split 察å¿ãããã®ã§ããã代ããã«ã¹ããªãŒã ãšããŠ
ã¢ã¬ã€ã
[å¿ èŠ 1.5] subïŒæ£èŠè¡šçŸ; tostringïŒ subïŒæ£èŠè¡šçŸ; ã¹ããªã³ã°; ãã©ã°ïŒ
å ¥åæååã®æ£èŠè¡šçŸã®æåã®äžèŽã次ã®ããã«çœ®ãæããŠååŸããæååãåºåããŸã
ã²ããè£éåŸã ã²ã jqæååã§ããå¿ èŠããããåç §ãå«ããããšãã§ããŸã
ååä»ããã£ããã£ã«ã ååä»ããã£ããã£ã¯ãäºå®äžãJSONãªããžã§ã¯ããšããŠè¡šç€ºãããŸãïŒ
ã«ãã£ãŠæ§ç¯ããã ãã£ããã£ãŒïŒãž ã²ãããããã£ãŠããxããšããååã®ãã£ããã£ãããå€æ°ãžã®åç §ã¯
ãïŒ.xïŒãã®åœ¢åŒãåããŸãã
[å¿ èŠ 1.5] gsubïŒæ£èŠè¡šçŸ; ã¹ããªã³ã°ïŒã gsubïŒæ£èŠè¡šçŸ; ã¹ããªã³ã°; ãã©ã°ïŒ
gãµã ã®ãããªãã®ã§ã ä»¥äž ãã ããéè€ããªãæ£èŠè¡šçŸã¯ãã¹ãŠã
æååãè£éåŸã
é«åºŠãª ååç¹åŸŽ
å€æ°ã¯ã»ãšãã©ã®ããã°ã©ãã³ã°èšèªã§çµ¶å¯Ÿã«å¿ èŠã§ãããéæ ŒãããŠããŸã
jqã®ãé«åºŠãªæ©èœãã«ã
ã»ãšãã©ã®èšèªã§ã¯ãå€æ°ã¯ããŒã¿ãæž¡ãå¯äžã®æ段ã§ãã ããªããèšç®ããå Žå
å€ã§ããããããè€æ°å䜿çšããå Žåã¯ãå€æ°ã«æ ŒçŽããå¿ èŠããããŸãã ã«
ããã°ã©ã ã®å¥ã®éšåã«å€ãæž¡ããšãããã°ã©ã ã®ãã®éšåã
é 眮ããå€æ°ãïŒé¢æ°ãã©ã¡ãŒã¿ãŒããªããžã§ã¯ãã¡ã³ããŒãªã©ãšããŠïŒå®çŸ©ããŸã
ããŒã¿ã
jqã§é¢æ°ãå®çŸ©ããããšãå¯èœã§ãããããã¯æ倧ã®æ©èœã§ãã
䜿çšã¯jqã®æšæºã©ã€ãã©ãªãå®çŸ©ããããšã§ãïŒ å°å³ & find å®éã«
jqã§æžãããŠããŸãïŒã
jqã«ã¯ãªãã¯ã·ã§ã³æŒç®åããããŸããããã¯éåžžã«åŒ·åã§ãããå°ã泚æãå¿ èŠã§ãã ç¹°ãè¿ããŸããããããã¯
äž»ã«å éšã§äœ¿çšãããjqã®æšæºã©ã€ãã©ãªã®ããã€ãã®æçšãªããããå®çŸ©ããŸãã
æåã¯æããã§ã¯ãªããããããŸããããjqã¯ãã¹ãŠãžã§ãã¬ãŒã¿ãŒã«é¢ãããã®ã§ãïŒã¯ããããèŠãããããã«
ä»ã®èšèªïŒã ãžã§ãã¬ãŒã¿ãŒã®åŠçãæ¯æŽããããã«ãããã€ãã®ãŠãŒãã£ãªãã£ãæäŸãããŠããŸãã
ããã€ãã®æå°éã®I / OãµããŒãïŒæšæºå ¥åããJSONãèªã¿åããJSONã
æšæºåºåïŒãå©çšå¯èœã§ãã
æåŸã«ãã¢ãžã¥ãŒã«/ã©ã€ãã©ãªã·ã¹ãã ããããŸãã
Variables
jqã§ã¯ããã¹ãŠã®ãã£ã«ã¿ãŒã«å ¥åãšåºåããããããæåã§é 管ããå¿ èŠã¯ãããŸããã
ããã°ã©ã ã®ããéšåãã次ã®éšåã«å€ãæž¡ããŸãã ããšãã°ãå€ãã®è¡šçŸ a + b,
å ¥åãXNUMXã€ã®ç°ãªãéšååŒã«æž¡ããŸãïŒããã§ã¯ a & b äž¡æ¹ãšãåãããã«æž¡ãããŸã
inputïŒãªã®ã§ãå€ãXNUMXå䜿çšããããã«ãéåžžãå€æ°ã¯å¿ èŠãããŸããã
ããšãã°ãæ°å€ã®é åã®å¹³åå€ãèšç®ããã«ã¯ãããã€ãã®å¿ èŠããããŸã
ã»ãšãã©ã®èšèªã®å€æ°-é åãä¿æããããã«å°ãªããšãXNUMXã€ãããããåèŠçŽ ã«XNUMXã€
ãŸãã¯ã«ãŒãã«ãŠã³ã¿ãŒã®å Žåã jqã§ã¯ãããã¯åã« å ããŸã / é·ã - å ããŸã åŒã¯äžããããŸã
é åãããã®åèšãçæãã é·ã åŒã«é åãäžãããããã®é åãçæãããŸã
é·ã
ãããã£ãŠãäžè¬çã«ãå€æ°ãå®çŸ©ããããããjqã®ã»ãšãã©ã®åé¡ã解決ããããã®ããã¯ãªãŒã³ãªæ¹æ³ããããŸãã
ããã§ããæã ãããã¯ç©äºãç°¡åã«ããã®ã§ãjqã¯ããªããã䜿ã£ãŠå€æ°ãå®çŸ©ããããšãå¯èœã«ããŸã
è¡šçŸ as $å€æ°ã ãã¹ãŠã®å€æ°åã¯ã§å§ãŸããŸã $ã ããã¯å°ãéãããŒãžã§ã³ã§ã
é åå¹³åã®äŸã®äŸïŒ
$ array_lengthãšããŠã®é·ã| è¿œå / $ array_length
å€æ°ãå®éã«äœ¿çšããç¶æ³ãèŠã€ããã«ã¯ãããè€éãªåé¡ãå¿ èŠã«ãªããŸã
ç§ãã¡ã®ç掻ã楜ã«ããŸãã
ãäœæè ããã£ãŒã«ããšãã¿ã€ãã«ããã£ãŒã«ããå«ãäžé£ã®ããã°æçš¿ããããå¥ã®ããã°æçš¿ããããšããŸãã
èè ã®ãŠãŒã¶ãŒåãå®éã®ååã«ãããããããã«äœ¿çšããããªããžã§ã¯ãã å ¥åã¯æ¬¡ã®ããã«ãªããŸãã
{"æçš¿"ïŒ[{"ã¿ã€ãã«"ïŒ "æåã®psot"ã "èè "ïŒ "anon"}ã
{"ã¿ã€ãã«"ïŒ "ããæžãããèšäº"ã "èè "ïŒ "person1"}]ã
"realnames"ïŒ{"anon"ïŒ "Anonymous Coward"ã
"person1"ïŒ "Person McPherson"}}
次ã®ããã«ãå®éã®ååãå«ãäœæè ãã£ãŒã«ãã䜿çšããŠæçš¿ãäœæããŸãã
{"title"ïŒ "Frist psot"ã "author"ïŒ "Anonymous Coward"}
{"ã¿ã€ãã«"ïŒ "ããæžãããèšäº"ã "èè "ïŒ "ããŒãœã³ãã¯ãã¡ãŒãœã³"}
åŸã§åç §ã§ããããã«ãå€æ°$ namesã䜿çšããŠrealnamesãªããžã§ã¯ããæ ŒçŽããŸã
èè ã®ãŠãŒã¶ãŒåãæ€çŽ¢ããå ŽåïŒ
.realnames as $ names | .posts [] | {ã¿ã€ãã«ãäœæè ïŒ$ names [.author]}
è¡šçŸ EXP as $x | ... æå³ïŒåŒã®å€ããšã« EXPãæ®ããå®è¡ããŸã
å ã®å ¥åå šäœãå«ããã€ãã©ã€ã³ãããã³ $x ãã®å€ã«èšå®ããŸãã ãããã£ãŠ as
foreachã«ãŒãã®ãããªãã®ãšããŠæ©èœããŸãã
åãããã« {ãµãŒ} 䟿å©ãªæžãæ¹ã§ã {fooïŒ .foo}ã®ã§ã {$ foo} 䟿å©ãªæžãæ¹ã§ã
{fooïŒ$ foo}.
åäžã®å€æ°ã䜿çšããŠè€æ°ã®å€æ°ã宣èšã§ããŸã as ãã¿ãŒã³ãæäŸããããšã«ããè¡šçŸ
å ¥åã®æ§é ãšäžèŽããŸãïŒããã¯ãç Žå£ããšããŠç¥ãããŠããŸãïŒïŒ
ã as {realnamesïŒ$ namesãpostsïŒ[$ firstã$ second]} | ..ã
é åãã¿ãŒã³ã®å€æ°å®£èšïŒäŸïŒ . as [$ firstã $ second]ïŒã«ãã€ã³ããã
é åã®èŠçŽ ã¯ãã€ã³ããã¯ã¹XNUMXã®èŠçŽ ããäžã«åãã£ãŠé çªã«å ¥åãããŸãã ãªããšã
é åãã¿ãŒã³èŠçŽ ã®ã€ã³ããã¯ã¹ã®å€ã ãã« ãã®å€æ°ã«ãã€ã³ããããŠããŸãã
å€æ°ã¯ãããããå®çŸ©ããåŒã®æ®ãã®éšåã«ã¹ã³ãŒããããããã
.realnames as $ names | ïŒ.posts [] | {ã¿ã€ãã«ãäœæè ïŒ$ names [.author]}ïŒ
åäœããŸãã
ïŒ.realnames as $ names | .posts []ïŒ| {ã¿ã€ãã«ãäœæè ïŒ$ names [.author]}
ããŸããã
ããã°ã©ãã³ã°èšèªçè«å®¶ã«ãšã£ãŠãjqå€æ°ã¯
åå¥ã¹ã³ãŒãã®ãã€ã³ãã£ã³ã°ã ç¹ã«ããã€ã³ãã£ã³ã°ã®å€ãå€æŽããæ¹æ³ã¯ãããŸããã
åãååã®æ°ãããã€ã³ãã£ã³ã°ããèšå®ã§ããŸããããã©ãã«ã衚瀺ãããŸãã
å€ããã®ã§ããã
jqÂŽ.bar as $ x | .foo | ã + $ xÂŽ
{"foo"ïŒ10ã "bar"ïŒ200}
=> 210
jqÂŽã as $ i | [ïŒã* 2 |ãas$ i | $ iïŒã$ i] ÂŽ
5
=> [10,5]
jqÂŽã as [$ aã$ bã{cïŒ$ c}] | $ a + $ b + $ cÂŽ
[2ã3ã{"c"ïŒ4ã "d"ïŒ5}]
=> 9
jqÂŽã[] as [$ aã$ b] | {aïŒ$ aãbïŒ$ b} ÂŽ
[[0]ã[0ã1]ã[2ã1ã0]]
=> {"a"ïŒ0ã "b"ïŒnull}ã{"a"ïŒ0ã "b"ïŒ1}ã{"a"ïŒ2ã "b"ïŒ1}
å®çŸ© æ©èœ
ãdefãæ§æã䜿çšããŠããã£ã«ã¿ãŒã«ååãä»ããããšãã§ããŸãã
defå¢åïŒã + 1;
ããããã å¢å çµã¿èŸŒã¿é¢æ°ãšåãããã«ãã£ã«ã¿ãŒãšããŠäœ¿çšã§ããŸãïŒå®éãããã¯
ããã€ãã®ãã«ãã€ã³ãã©ã®ããã«å®çŸ©ãããŠãããã§ãïŒã é¢æ°ã¯åŒæ°ãåãããšãã§ããŸãïŒ
def mapïŒfïŒïŒ[ã[] | f];
åŒæ°ã¯ãå€ãšããŠã§ã¯ãªãããã£ã«ã¿ãŒãšããŠæž¡ãããŸãã åãåŒæ°ãåç §ã§ããŸã
ç°ãªãå ¥åã§è€æ°åïŒããã§ã¯ f å ¥åé åã®èŠçŽ ããšã«å®è¡ãããŸãïŒã
é¢æ°ãžã®åŒæ°ã¯ãå€ã®åŒæ°ãããã³ãŒã«ããã¯ã®ããã«æ©èœããŸãã ããã¯
ç解ããããšãéèŠã§ãã æ€èšïŒ
def fooïŒfïŒïŒf | f;
5 | fooïŒã* 2ïŒ
çµæã¯20ã«ãªããŸãã f is ã* 2ãããã³ã®æåã®åŒã³åºãäž f . 5ã«ãªããŸã
10åç®ã¯5ïŒ2 * 20ïŒã«ãªããããçµæã¯XNUMXã«ãªããŸããé¢æ°ã®åŒæ°
ã¯ãã£ã«ã¿ãŒã§ããããã£ã«ã¿ãŒã¯åŒã³åºããããšãã«å ¥åãæåŸ ããŸãã
åçŽãªé¢æ°ãå®çŸ©ããããã®å€åŒæ°ã®åäœãå¿ èŠãªå Žåã¯ã
å€æ°ïŒ
def addvalueïŒfïŒïŒf as $ f | mapïŒã+ $ fïŒ;
ãŸãã¯ãçç¥åœ¢ã䜿çšããŸãã
def addvalueïŒ$ fïŒïŒ...;
ã©ã¡ãã®å®çŸ©ã§ãã addvalueïŒ.fooïŒ çŸåšã®å ¥åãè¿œå ããŸã .foo ãããããžã®ãã£ãŒã«ã
é åã®èŠçŽ ã
åãé¢æ°åã䜿çšããè€æ°ã®å®çŸ©ãèš±å¯ãããŸãã ååå®çŸ©ã¯çœ®ãæããããŸã
åãæ°ã®é¢æ°åŒæ°ã«å¯Ÿããåã®åŒæ°ã§ããã
åå®çŸ©åŸã®é¢æ°ïŒãŸãã¯ã¡ã€ã³ããã°ã©ã ïŒã
jqÂŽdef addvalueïŒfïŒïŒã + [f]; mapïŒaddvalueïŒã[0]ïŒïŒ ÂŽ
[[1,2]ã[10,20]]
=> [[1,2,1]ã[10,20,10]]
jqÂŽdef addvalueïŒfïŒïŒf as $ x | mapïŒã+ $ xïŒ; addvalueïŒã[0]ïŒ ÂŽ
[[1,2]ã[10,20]]
=> [[1,2,1,2]ã[10,20,1,2]]
æžãã
ã æžãããŸã jqã®æ§æã䜿çšãããšãåŒã®ãã¹ãŠã®çµæã次ã®ããã«çµã¿åãããããšãã§ããŸãã
ããããåäžã®çãã«èç©ããŸãã äŸãšããŠãåæ ŒããŸã ã3,2,1] ããã«
åŒïŒ
ã[]ã$ itemïŒ0;ã+ $ itemïŒãšããŠæžãããŸã
çµæããšã« ã[] ãçæãã . + $ item çŸåšã®åèšã环ç©ããããã«å®è¡ãããŸãã
0ããéå§ããŸãããã®äŸã§ã¯ã ã[] çµæ3ã2ãããã³1ãçæããããããå¹æã¯æ¬¡ã®ããã«ãªããŸãã
ãã®ãããªãã®ãå®è¡ããã®ãšäŒŒãŠããŸãïŒ
0 | ïŒ$ item |ã+ $ itemãšããŠ3ïŒ|
ïŒ2 as $ item |ã+ $ itemïŒ|
ïŒ$ item |ã+ $ itemãšããŠ1ïŒ
jqÂŽreduceã[] as $ itemïŒ0;ã+ $ itemïŒ ÂŽ
ã10,2,5,3]
=> 20
limitïŒn; expïŒ
ã å¶é é¢æ°ã¯æ倧ãæœåºããŸã n ããã®åºå EXP.
jqÂŽ [limitïŒ3;ã[]ïŒ] ÂŽ
ã0,1,2,3,4,5,6,7,8,9]
=> [0,1,2]
firstïŒexprïŒã lastïŒexprïŒã nthïŒn; exprïŒ
ã firstïŒexprïŒ & lastïŒexprïŒ é¢æ°ã¯ãããæåãšæåŸã®å€ãæœåºããŸã åŒ,
ã
ã nthïŒn; exprïŒ é¢æ°ã¯ãã«ãã£ãŠåºåãããnçªç®ã®å€ãæœåºããŸã åŒã ããã¯æ¬¡ã®ããã«å®çŸ©ã§ããŸã
def nthïŒn; exprïŒïŒ lastïŒlimitïŒn + 1; exprïŒïŒ;ã ãäºæ¿ãã ãã nthïŒn; exprïŒ ãµããŒãããŠããŸãã
ã®è² ã®å€ n.
jqÂŽ [firstïŒrangeïŒãïŒïŒãlastïŒrangeïŒãïŒïŒãnthïŒ./ 2; rangeïŒãïŒïŒ] ÂŽ
10
=> [0,9,5]
æåã éå»ã nçªç®ïŒnïŒ
ã æåã® & last é¢æ°ã¯ã次ã®ä»»æã®é åããæåãšæåŸã®å€ãæœåºããŸãã ..
ã nçªç®ïŒnïŒ é¢æ°ã¯ãã§ä»»æã®é åã®nçªç®ã®å€ãæœåºããŸã ..
jqÂŽ [rangeïŒãïŒ] | [æåãæåŸã nçªç®ã®ïŒ5ïŒ] ÂŽ
10
=> [0,9,5]
foreachã®
ã foreachã® æ§æã¯æ¬¡ã®ããã«ãªããŸã æžãããŸããããããã®æ§ç¯ãå¯èœã«ããããšãç®çãšããŠããŸã å¶é
äžéçµæãçæããã¬ãã¥ãŒãµãŒïŒäŸãåç §ïŒã
ãã©ãŒã 㯠foreachã® EXP as $ var ïŒåæå; ã¢ããããŒã; ãšãã¹ïŒã æ§ æžãããŸã, INIT è©äŸ¡ãããŸã
ç¶æ å€ãçæããããã«XNUMXåã次㫠EXP ã«ãã€ã³ããããŠããŸã $ var, UPDATE is
ã®åºåããšã«è©äŸ¡ EXP çŸåšã®ç¶æ ãš $ var èŠããã åå€
ã«ãã£ãŠåºå UPDATE 以åã®ç¶æ ã眮ãæããŸãã ã€ãã«ã ãšãã¹ æ°ããããšã«è©äŸ¡ãããŸã
ã®åºåãæœåºããç¶æ foreachã®.
ããã¯äž»ã«æ§ç¯ã«ã®ã¿åœ¹ç«ã¡ãŸã æžãããŸã - ãš å¶é-ã®ãããªæ©èœã ããããããã¯
éšåçãªåæžãå¯èœã«ãªããããã¯ããã«äžè¬çã§ãïŒä»¥äžã®äŸãåç §ïŒã
jqÂŽ [foreachã[] as $ itemïŒ[[]ã[]]; if $ item == null then [[]ãã[0]] else [ïŒã[0] + [$ item]ïŒã[ ]] end; $ item == nullã®å Žåãã[1] else empty endïŒ] ÂŽ
[1,2,3,4ãnullã "a"ã "b"ãnull]
=> [[1,2,3,4]ã["a"ã "b"]]
ååž°
äžèšã®ããã«ã ååž° ååž°ã䜿çšããä»»æã®jqé¢æ°ãååž°çã«ããããšãã§ããŸãã ã¶
while çµã¿èŸŒã¿ã¯ååž°ã®èŠ³ç¹ãããå®è£ ãããŠããŸãã
æ«å°ŸåŒã³åºãã¯ãååž°åŒã³åºãã®å·ŠåŽã®åŒãåºåããããã³ã«æé©åãããŸã
ãã®æåŸã®å€ã å®éã«ã¯ãããã¯ååž°ã®å·ŠåŽã®åŒã
åŒã³åºãã¯ãå ¥åããšã«è€æ°ã®åºåãçæããŠã¯ãªããŸããã
äŸïŒ
def recurseïŒfïŒïŒdef rïŒããïŒf | selectïŒãïŒ= nullïŒ| rïŒ; r;
def whileïŒcond; updateïŒïŒ
def _whileïŒ
cond thenããïŒupdate | _whileïŒelse empty end;
_ãã®é;
def repeatïŒexpïŒïŒ
def _repeatïŒ
expã_repeat;
_ç¹°ãè¿ã;
ãžã§ãã¬ãŒã¿ & ã€ãã¬ãŒã¿
äžéšã®jqæŒç®åãšé¢æ°ã¯ããŒããçæã§ãããšããç¹ã§å®éã«ã¯ãžã§ãã¬ãŒã¿ã§ãã
ä»ã®ããã°ã©ãã³ã°ã§äºæ³ãããããã«ãå ¥åããšã«XNUMXã€ä»¥äžã®å€
ãžã§ãã¬ãŒã¿ãŒãæã€èšèªã äŸãã°ã ã[] å ¥åã«ãã¹ãŠã®å€ãçæããŸã
ïŒé åãŸãã¯ãªããžã§ã¯ãã§ããå¿ èŠããããŸãïŒã rangeïŒ0; 10ïŒ 0ãšã®éã®æŽæ°ãçæããŸã
10 ãªã©ã
ã³ã³ãæŒç®åã§ãããžã§ãã¬ãŒã¿ã§ãããæåã«çæãããå€ãçæããŸã
ã«ã³ãã®å·ŠåŽã®åŒã次ã«ãããã®ããããã«ã€ããŠãå€ã¯ã«ãã£ãŠçæãããŸã
ã«ã³ãã®å³åŽã®åŒã
ã 空㮠ãã«ãã€ã³ã¯ãŒãåºåãçæãããžã§ãã¬ãŒã¿ã§ãã The 空㮠ãã«ãã€ã³
åã®ãžã§ãã¬ãŒã¿åŒã«æ»ããŸãã
ãã¹ãŠã®jqé¢æ°ã¯ãçµã¿èŸŒã¿ã®ãžã§ãã¬ãŒã¿ãŒã䜿çšããã ãã§ãžã§ãã¬ãŒã¿ãŒã«ããããšãã§ããŸãã ãããå¯èœã§ã
ååž°ãšã³ã³ãæŒç®åã®ã¿ã䜿çšããŠæ°ãããžã§ãã¬ãŒã¿ãŒãå®çŸ©ããŸãã ååž°çãªå Žå
åŒã³åºãããããŒã«äœçœ®ãã«ããå Žåããžã§ãã¬ãŒã¿ãŒã¯å¹ççã«ãªããŸãã äŸã§ã¯
ã«ããååž°åŒã³åºãã®äž _ç¯å² ããèªäœãå°Ÿã®äœçœ®ã«ãããŸãã äŸã¯èªæ ¢ããŸã
XNUMXã€ã®é«åºŠãªãããã¯ïŒæ«å°Ÿååž°ããžã§ãã¬ãŒã¿ãŒã®æ§ç¯ãããã³ãµãæ©èœã
jqÂŽdef rangeïŒinit; upto; byïŒïŒdef _rangeïŒifïŒby> 0andã<uptoïŒorïŒby <0andã> uptoïŒthenããïŒïŒã+ byïŒ| _rangeïŒelseã çµãã; if by == 0 then init else init | _range end | selectïŒïŒby> 0andã<uptoïŒorïŒby <0andã> uptoïŒïŒ; rangeïŒ0; 10; 3ïŒ ÂŽ
ãã«
=> 0ã3ã6ã9
jqÂŽdef whileïŒcond; updateïŒïŒdef _whileïŒif cond thenããïŒupdate | _whileïŒelse empty end; _ãã®é; [whileïŒã<100;ã* 2ïŒ] ÂŽ
1
=> [1,2,4,8,16,32,64]
æ°åŠ
jqã¯çŸåšãIEEE754å粟床ïŒ64ãããïŒæµ®åå°æ°ç¹æ°ã®ã¿ããµããŒãããŠããŸãã
次ã®ãããªåçŽãªç®è¡æŒç®åã«å ã㊠+ãjqã«ã¯ã»ãšãã©ã®æšæºçãªæ°åŠé¢æ°ããããŸã
Cæ°åŠã©ã€ãã©ãªããã åäžã®å ¥ååŒæ°ãåãCæ°åŠé¢æ°ïŒäŸïŒ 眪ïŒïŒ)
åŒæ°ããŒãã®jqé¢æ°ãšããŠäœ¿çšã§ããŸãã XNUMXã€ã®å ¥åãåãåãCæ°åŠé¢æ°
åŒæ°ïŒäŸïŒ æèïŒïŒïŒã¯ãç¡èŠããXNUMXã€ã®åŒæ°ã®jqé¢æ°ãšããŠäœ¿çšã§ããŸãã ..
æšæºã®æ°åŠé¢æ°ã®å¯çšæ§ã¯ã察å¿ããæ°åŠé¢æ°ã®å¯çšæ§ã«äŸåããŸã
ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãšCæ°åŠã©ã€ãã©ãªã®æ°åŠé¢æ°ã å©çšã§ããªãæ°åŠé¢æ°
å®çŸ©ãããŸããããšã©ãŒãçºçããŸãã
I / O
çŸæç¹ã§ã¯ãjqã¯I / Oãæå°éã«ãµããŒãããŠãããã»ãšãã©ã®å Žåããã€å¶åŸ¡ããããšãã圢ã§ãµããŒããããŠããŸãã
å ¥åãèªã¿åãããŸãã ãã®ããã«XNUMXã€ã®çµã¿èŸŒã¿é¢æ°ãæäŸãããŠããŸãã & å ¥åãããã¯èªãã
åããœãŒã¹ããïŒäŸãã°ã stdinãã³ãã³ãã©ã€ã³ã§æå®ããããã¡ã€ã«ïŒjqèªäœãšããŠã ãããã¯
XNUMXã€ã®ãã«ãã€ã³ãããã³jqç¬èªã®èªã¿åãã¢ã¯ã·ã§ã³ã¯ãçžäºã«ã€ã³ã¿ãŒãªãŒãã§ããŸãã
XNUMXã€ã®ãã«ãã€ã³ã¯ãæå°éã®åºåæ©èœãæäŸããŸãã debugã ïŒjqããã°ã©ã ã®
åºåå€ã¯åžžã«JSONããã¹ããšããŠåºåãããŸã (Linuxã§èšããšããã®stdoutïŒãïŒ debug ãã«ãã€ã³ã¯æã€ããšãã§ããŸã
libjq C APIã䜿çšããããããã§ã¯ãªãå®è¡å¯èœãã¡ã€ã«ãªã©ãã¢ããªã±ãŒã·ã§ã³åºæã®åäœ
jqå®è¡å¯èœãã¡ã€ã«èªäœã
XNUMXã€ã®æ°ããå ¥åãåºåããŸãã
å ¥å
æ®ãã®ãã¹ãŠã®å ¥åãXNUMXã€ãã€åºåããŸãã
ããã¯äž»ã«ãããã°ã©ã ã®å ¥åãæžããå Žåã«åœ¹ç«ã¡ãŸãã
debug
å ¥åå€ã«åºã¥ãããããã°ã¡ãã»ãŒãžãçæããŸãã jqå®è¡å¯èœãã¡ã€ã«ã¯ã©ããããŸã
å ¥åå€ ["ãããã°ïŒ"ã ] ãããšæ¹è¡ãstderrã«åºåããŸãã
ã³ã³ãã¯ãã«ã ããã¯å°æ¥å€æŽãããå¯èœæ§ããããŸãã
å ¥åãã¡ã€ã«å
å ¥åãçŸåšãã£ã«ã¿ãªã³ã°ãããŠãããã¡ã€ã«ã®ååãè¿ããŸãã ããã¯
jqãUTF-8ãã±ãŒã«ã§å®è¡ãããŠããªãéããããŸãæ©èœããŸããã
å ¥åè¡çªå·
çŸåšãã£ã«ã¿ãªã³ã°ãããŠããå ¥åã®è¡çªå·ãè¿ããŸãã
STREAMING
- ã¹ããªãŒã ãªãã·ã§ã³jqã¯ãå ¥åããã¹ããã¹ããªãŒãã³ã°æ¹åŒã§è§£æã§ãããããjqãå¯èœã«ãªããŸãã
解æåŸã§ã¯ãªããããã«å€§ããªJSONããã¹ãã®åŠçãéå§ããããã°ã©ã
å®äºããŸãã ãµã€ãºã1GBã®åäžã®JSONããã¹ããããå Žåããããã¹ããªãŒãã³ã°ãããšã
ãããã¯ããã«è¿ éã«åŠçããŸãã
ãã ããjqããã°ã©ã ã®ããã«ãã¹ããªãŒãã³ã°ãåŠçããã®ã¯ç°¡åã§ã¯ãããŸããã [ ã
] ïŒããã³ä»ã®ããã€ãã®åœ¢åŒïŒå ¥åãšããŠã
ã¹ããªãŒã ã®åŠçã容æã«ããããã«ãããã€ãã®ãã«ãã€ã³ãæäŸãããŠããŸãã
以äžã®äŸã§ã¯ãã®ã¹ããªãŒãã³ã°åœ¢åŒã䜿çšããŠããŸã [0ã[1]]ãã¿ã³ã®é£ã«ãã
[[0],0],[[1,0],1],[[1,0]],[[1]].
ã¹ããªãŒãã³ã°ãã©ãŒã ã«ã¯æ¬¡ã®ãã®ãå«ãŸããŸã [ ã ] ïŒä»»æã®ã¹ã«ã©ãŒå€ã空ã®é åã瀺ãããã
ãŸãã¯ç©ºã®ãªããžã§ã¯ãïŒãããã³ [ ] ïŒé åãŸãã¯ãªããžã§ã¯ãã®çµããã瀺ãããïŒã æªæ¥
jqã®ããŒãžã§ã³ã¯ã§å®è¡ãããŸã - ã¹ããªãŒã & -seq 次ã®ãããªè¿œå ã®ãã©ãŒã ãåºåããå ŽåããããŸã ["ãšã©ãŒ
ã¡ãã»ãŒãž"] å ¥åããã¹ãã®è§£æã«å€±æãããšãã
truncate_streamïŒstream_expressionïŒ
å ¥åãšããŠæ°å€ãæ¶è²»ããããã®å¯Ÿå¿ããæ°ã®ãã¹èŠçŽ ãåãæšãŠãŸãã
æå®ãããã¹ããªãŒãã³ã°åŒã®åºåã®å·ŠåŽã
jq ÂŽ[1|truncate_stream([[0],1],[[1,0],2],[[1,0]],[[1]])]ÂŽ
1
=> [[[0]ã2]ã[[0]]]
fromstreamïŒstream_expressionïŒ
ã¹ããªãŒã åŒã®åºåã«å¯Ÿå¿ããå€ãåºåããŸãã
jq ÂŽfromstream(1|truncate_stream([[0],1],[[1,0],2],[[1,0]],[[1]]))ÂŽ
ãã«
=> [2]
ã¹ããªãŒã ãž
ã ã¹ããªãŒã ãž ãã«ãã€ã³ã¯ããã®å ¥åã®ã¹ããªãŒãã³ã°åœ¢åŒãåºåããŸãã
jqÂŽã as $ dot | fromstreamïŒ$ dot | tostreamïŒ|ã== $ dotÂŽ
[0ã[1ã{"a"ïŒ1}ã{"b"ïŒ2}]]
=> true
å²ãåœãŠ
jqã§ã®å²ãåœãŠã®åäœã¯ãã»ãšãã©ã®ããã°ã©ãã³ã°èšèªãšã¯å°ãç°ãªããŸãã jqã¯ããŸãã
äœããžã®åç §ãšã³ããŒãåºå¥ããŸã-XNUMXã€ã®ãªããžã§ã¯ããŸãã¯é åã¯
ãåããªããžã§ã¯ãããŸãã¯ãçãããªãããšããæŠå¿µãããã«æããã«ãçãããçãããªããã®ãããã
åããªããžã§ã¯ããã
ãªããžã§ã¯ãã«é åã§ããXNUMXã€ã®ãã£ãŒã«ããããå Žåã .foo & ãããŒããããŠããªãã¯äœããè¿œå ããŸã
.fooãã¿ãããããã®åŸã ãã㌠倧ãããªãããšã¯ãããŸããã èšå®ããã°ããã§ã ãã㌠= .fooã 䜿çšããŠããå Žå
PythonãJavaãRubyãJavascriptãªã©ã®èšèªã§ããã°ã©ãã³ã°ãããªããããªãã¯èããããšãã§ããŸã
jqãå²ãåœãŠãè¡ãåã«ããã¹ãŠã®ãªããžã§ã¯ãã®å®å šãªãã£ãŒãã³ããŒãè¡ããã®ããã«
ïŒããã©ãŒãã³ã¹ã«é¢ããŠã¯ãå®éã«ã¯ãããè¡ããŸãããããããäžè¬çãªèãæ¹ã§ãïŒã
jqã®ãã¹ãŠã®ä»£å ¥æŒç®åã«ã¯ãå·ŠåŽã«ãã¹åŒããããŸãã
=
ãã£ã«ã¿ãŒ .foo = 1 å ¥åãšããŠãªããžã§ã¯ããåãåããåºåãšããŠãªããžã§ã¯ããçæããŸãã
ãfooããã£ãŒã«ãã1ã«èšå®ãããŠããŸããjqã«äœãããå€æŽããŸãã¯ãå€æŽããããšããæŠå¿µã¯ãããŸãã-
ãã¹ãŠã®jqå€ã¯äžå€ã§ãã äŸãã°ã
.foo = .bar | .foo.baz = 1
.bar.bazã1ã«èšå®ãããšããå¯äœçšã¯ãããŸããã
JavascriptãPythonãRubyãŸãã¯ä»ã®èšèªã®ããã°ã©ã ã¯ããããã§ãããã ãããã®èšèªãšã¯ç°ãªãïŒãã ã
Haskellãä»ã®é¢æ°åèšèªã®ããã«ïŒãXNUMXã€ã®é åã
ãåãé åããŸãã¯ãåããªããžã§ã¯ããã§ãããªããžã§ã¯ãã ãããã¯çããå Žåãçãããªãå ŽåããããŸããã
ããããã®ç¶æ³ã§ãããã®XNUMXã€ãå€æŽããå ŽåãããXNUMXã€ã¯ç§ãã¡ã®èåŸã§å€æŽãããŸããã
ããã¯ãjqã§åŸªç°å€ãäœæããããšãäžå¯èœã§ããããšãæå³ããŸãïŒé åãªã©
æåã®èŠçŽ ã¯ããèªäœã§ãïŒã ããã¯éåžžã«æå³çãªãã®ã§ãããjq
ããã°ã©ã ãçæã§ããJSONã§è¡šãããšãã§ããŸãã
ÂŽ=ÂŽã®å·ŠåŽã¯ãã®å€ãåç §ããŠããããšã«æ³šæããŠãã ããã .ã ããã㊠$ var.foo = 1 åäœããŸãã
äºæ³éã ïŒ$ var.foo ã®æå¹ãŸãã¯æçšãªãã¹åŒã§ã¯ãããŸãã .ïŒ; 䜿çšãã $ var | .foo = 1
ã代ããã«ã䜿ããã ããã
ÂŽ=ÂŽã®å³åŽãè€æ°ã®å€ãçæããå Žåããã®ãããªå€ããšã«jqã¯
å·ŠåŽã®ãã¹ãå€ã«èšå®ãããšãå€æŽããããã¹ãåºåãããŸã ..
ããšãã°ã ïŒ.aã.bïŒ=ç¯å²(2) outputs {"a"ïŒ0ã "b"ïŒ0}ãã¿ãããããã®åŸã {"a"ïŒ1ã "b"ïŒ1}ã æŽæ°"
è²æž¡ãã©ãŒã ïŒäžèšåç §ïŒã¯ãããè¡ããŸããã
ããã泚æããŠãã ãã .aã.b = 0 èšå®ãããŸãã .a & .bã ã ãã© ïŒ.aã.bïŒ= 0 äž¡æ¹ãèšå®ããŸãã
|=
ä»£å ¥æŒç®å ÂŽ=ÂŽãšåæ§ã«ãjqã¯ãæŽæ°ãæŒç®å ÂŽ| =ÂŽãæäŸããŸãã
å³åŽã®ãã£ã«ã¿ãŒãåããã®ããããã£ã®æ°ããå€ãèšç®ããŸã .
ãã®åŒãä»ããŠå€ãå€ãå®è¡ããããšã«ãã£ãŠå²ãåœãŠãããŸãã ããšãã°ã.foo | =
ã+ 1ã¯ããfooããã£ãŒã«ããå ¥åã®ãfooããã©ã¹1ã«èšå®ããããªããžã§ã¯ããäœæããŸãã
ãã®äŸã¯ã ÂŽ=ÂŽãš ÂŽ| =ÂŽã®éãã瀺ããŠããã¯ãã§ãã
ããã°ã©ã ã«å ¥å ÂŽ{"a"ïŒ{"b"ïŒ10}ã "b"ïŒ20}ÂŽãæäŸããŸãã
.a = .b .a | = .b
åè ã¯ãå ¥åã®ãaããã£ãŒã«ããå ¥åã®ãbããã£ãŒã«ãã«èšå®ãã次ã®ããã«çæããŸãã
åºå{"a"ïŒ20}ã åŸè ã¯ãå ¥åã®ãaããã£ãŒã«ãããaããã£ãŒã«ãã«èšå®ããŸãã
"b"ãã£ãŒã«ãã{"a"ïŒ10}ãçæããŸãã
å·ŠåŽã¯ãä»»æã®äžè¬çãªãã¹åŒã«ããããšãã§ããŸãã èŠã éïŒïŒ.
ÂŽ| =ÂŽã®å·ŠåŽã¯ãã®å€ãåç §ããŠããããšã«æ³šæããŠãã ããã .ã ããã㊠$ var.foo |= . + 1 ããŸãã
æåŸ ã©ããã«åäœããŸãïŒ$ var.foo ã®æå¹ãŸãã¯æçšãªãã¹åŒã§ã¯ãããŸãã .ïŒ; 䜿çšãã $ var | .foo
|= . + 1 ã代ããã«ã䜿ããã ããã
å³åŽãè€æ°ã®å€ãåºåããå ŽåãæåŸã®å€ã®ã¿ã䜿çšãããŸãã
jqÂŽïŒ.. | selectïŒtype == "boolean"ïŒïŒ| = ifã 次ã«1ããã®ä»0çµäº ÂŽ
[trueãfalseã[5ãtrueã[trueã[false]]ãfalse]]
=> [1,0,[5,1,[1,[0]],0]]
+ =ã -=ã * =ã / =ã ïŒ =ã // =
jqã«ã¯æ¬¡ã®åœ¢åŒã®æŒç®åãããã€ããããŸã a op = bããããã¯ãã¹ãŠåçã§ã a |= . op bã ããã
+= 1 å€ãã€ã³ã¯ãªã¡ã³ãããããã«äœ¿çšã§ããŸãã
jqÂŽ.foo + = 1ÂŽ
{"foo"ïŒ42}
=> {"foo"ïŒ43}
è€é㪠å²ãåœãŠ
jqå²ãåœãŠã®å·ŠåŽã§ã¯ãã»ãšãã©ã®å Žåãããå€ãã®ããšãèš±å¯ãããŠããŸã
èšèªã å·ŠåŽã§ç°¡åãªãã£ãŒã«ãã¢ã¯ã»ã¹ããã§ã«èŠãŸãããã
é åã¢ã¯ã»ã¹ãåæ§ã«æ©èœããããšã«é©ããŠãã ããã
.posts [0] .title = "JQããã¥ã¢ã«"
é©ããããããããŸããããå·ŠåŽã®åŒã¯è€æ°ãçæããå¯èœæ§ããããŸã
å ¥åããã¥ã¡ã³ãã®ããŸããŸãªãã€ã³ããåç §ããçµæïŒ
.posts []ãcomments | =ã + ["ããã¯çŽ æŽããã"]
ãã®äŸã§ã¯ãæååãthisisgreatããåæçš¿ã®ãcommentsãé åã«è¿œå ããŸãã
å ¥åïŒå ¥åã¯ãæçš¿ã®é åã§ãããpostsããã£ãŒã«ããæã€ãªããžã§ã¯ãã§ãïŒã
jqããa = bãã®ãããªå²ãåœãŠã«ééãããšãjqã¯aãéžæããããã«ãã©ã£ãããã¹ããèšé²ããŸãã
å®è¡äžã®å ¥åããã¥ã¡ã³ãã®äžéšã 次ã«ããã®ãã¹ã䜿çšããŠã
å²ãåœãŠã®å®è¡äžã«å€æŽããå ¥åã ä»»æã®ãã£ã«ã¿ãŒã䜿çšã§ããŸã
çå·ã®å·ŠåŽ-å ¥åããéžæãããã¹ã¯ã
å²ãåœãŠãå®è¡ãããŸãã
ããã¯éåžžã«åŒ·åãªæäœã§ãã ã䜿çšããŠãããã°æçš¿ã«ã³ã¡ã³ããè¿œå ããããšããŸãã
äžèšãšåããããã°ãå ¥åã ä»åã¯ã
ãã¹ããã©ã³ãã åè¿°ã®ãéžæãæ©èœã䜿çšããŠããããã®æçš¿ãèŠã€ããããšãã§ããŸãã
.posts [] | selectïŒ.author == "stedolan"ïŒ
ãã®æäœã«ãã£ãŠæäŸããããã¹ã¯ããstedolanããæžã蟌ãã åæçš¿ãæãã
以åãšåãæ¹æ³ã§ãããããã«ã³ã¡ã³ãããããšãã§ããŸãã
ïŒ.posts [] | selectïŒ.author == "stedolan"ïŒ| .commentsïŒ| =
ã + ["ã²ã©ãã"]
ã¢ãžã¥ãŒã«
jqã«ã¯ã©ã€ãã©ãª/ã¢ãžã¥ãŒã«ã·ã¹ãã ããããŸãã ã¢ãžã¥ãŒã«ã¯ãååãã§çµãããã¡ã€ã«ã§ã .jq.
ããã°ã©ã ã«ãã£ãŠã€ã³ããŒããããã¢ãžã¥ãŒã«ã¯ãããã©ã«ãã®æ€çŽ¢ãã¹ã§æ€çŽ¢ãããŸãïŒä»¥äžãåç §ïŒã The
import & include ãã£ã¬ã¯ãã£ãã䜿çšãããšãã€ã³ããŒã¿ãŒã¯ãã®ãã¹ãå€æŽã§ããŸãã
æ€çŽ¢ãã¹å ã®ãã¹ã¯ãããŸããŸãªçœ®æã®å¯Ÿè±¡ã«ãªããŸãã
ãã/ãã§å§ãŸããã¹ã®å ŽåããŠãŒã¶ãŒã®ããŒã ãã£ã¬ã¯ããªããããã«çœ®ãæããããŸãã
ã$ ORIGIN /ãã§å§ãŸããã¹ã®å Žåãjqå®è¡å¯èœãã¡ã€ã«ã®ãã¹ã代ããã«äœ¿çšãããŸã
ã$ ORIGINãã
ã./ãã§å§ãŸããã¹ãŸãã¯ãããã§ãããã¹ã®å Žåãã€ã³ã¯ã«ãŒããã¡ã€ã«ã®ãã¹ã¯æ¬¡ã®ããã«ãªããŸãã
ãããã®ä»£ããã«äœ¿çšããŸãã ã³ãã³ãã©ã€ã³ã§æå®ããããããã¬ãã«ããã°ã©ã ã®å ŽåãçŸåš
ãã£ã¬ã¯ããªã䜿çšãããŸãã
ã€ã³ããŒããã£ã¬ã¯ãã£ãã¯ããªãã·ã§ã³ã§ãããã©ã«ããè¿œå ãããæ€çŽ¢ãã¹ãæå®ã§ããŸãã
ããã©ã«ãã®æ€çŽ¢ãã¹ã¯ãã«æå®ãããæ€çŽ¢ãã¹ã§ãã -L ã³ãã³ãã©ã€ã³ãªãã·ã§ã³ããã以å€ã®å Žå
["ã/ .jq", "$ ORIGIN /../ lib / jq"ã "$ ORIGIN /ãã/ lib"].
ãã«ããã³ç©ºã®æååãã¹èŠçŽ ã¯ãæ€çŽ¢ãã¹åŠçãçµäºããŸãã
çžå¯Ÿãã¹ãfoo / barãã®äŸåé¢ä¿ã¯ããfoo /bar.jqãã§æ€çŽ¢ããã
æå®ãããæ€çŽ¢ãã¹ã®ãfoo / bar /bar.jqãã ããã¯ãã¢ãžã¥ãŒã«ãé 眮ã§ããããã«ããããšãç®çãšããŠããŸã
ããšãã°ãããŒãžã§ã³ç®¡çãã¡ã€ã«ãREADMEãã¡ã€ã«ãªã©ãšäžç·ã«ãã£ã¬ã¯ããªã«ãããŸãã
ãŸããåäžãã¡ã€ã«ã¢ãžã¥ãŒã«ãèš±å¯ããŸãã
åãååã®é£ç¶ããã³ã³ããŒãã³ãã¯ããããŸãããåé¿ããããšã¯ã§ããŸããïŒäŸïŒ
ãfoo / fooãïŒã
ããšãã°ã -L $ HOME / .jq ã¢ãžã¥ãŒã« foo ã§èŠã€ããããšãã§ããŸã $ HOME / .jq / foo.jq &
$ HOME / .jq / foo / foo.jq.
ã$ HOME / .jqãããã¡ã€ã«ã®å Žåãã¡ã€ã³ããã°ã©ã ã«ãœãŒã¹ãããŸãã
import çžå¯Ÿãã¹æåå as NAME [ ];
æ€çŽ¢ãã¹å ã®ãã£ã¬ã¯ããªãåºæºã«ããŠãæå®ããããã¹ã§èŠã€ãã£ãã¢ãžã¥ãŒã«ãã€ã³ããŒãããŸãã ã.jqã
çžå¯Ÿãã¹æååã«æ¥å°ŸèŸãè¿œå ãããŸãã ã¢ãžã¥ãŒã«ã®ã·ã³ãã«ã®åã«ã¯æ¥é èŸãä»ããŠããŸã
"ååïŒïŒ"ã
ãªãã·ã§ã³ã®ã¡ã¿ããŒã¿ã¯å®æ°jqåŒã§ããå¿ èŠããããŸãã ããŒãæã€ãªããžã§ã¯ãã§ããå¿ èŠããããŸã
ãããŒã ããŒãžããªã©ã çŸæç¹ã§ã¯ãjqã¯ã®ãæ€çŽ¢ãããŒ/å€ã®ã¿ã䜿çšããŸã
ã¡ã¿ããŒã¿ã ã¡ã¿ããŒã¿ã¯ããŠãŒã¶ãŒã ã¢ãžã¥ãŒã«ã¡ã¿ å èµã
ã¡ã¿ããŒã¿ã®ãæ€çŽ¢ãããŒãååšããå Žåã¯ãæååãŸãã¯é åã®å€ïŒarray
æååã®ïŒ; ããã¯ãæäžäœã®æ€çŽ¢ãã¹ã®åã«ä»ããæ€çŽ¢ãã¹ã§ãã
include çžå¯Ÿãã¹æåå [ ];
æ€çŽ¢ãã¹å ã®ãã£ã¬ã¯ããªã«é¢é£ããç¹å®ã®ãã¹ã§èŠã€ãã£ãã¢ãžã¥ãŒã«ããããããããã§ãããã®ããã«ã€ã³ããŒãããŸã
æå®ã®å Žæã«å«ãŸããŠããŸããã ã.jqããµãã£ãã¯ã¹ãçžå¯Ÿãã¹æååã«è¿œå ãããŸãã The
ã¢ãžã¥ãŒã«ã®ã·ã³ãã«ã¯ãã¢ãžã¥ãŒã«ã®ã³ã³ãã³ããæã£ãŠãããã®ããã«ãåŒã³åºãå ã®åå空éã«ã€ã³ããŒããããŸã
çŽæ¥å«ãŸããŠããŸãã
ãªãã·ã§ã³ã®ã¡ã¿ããŒã¿ã¯å®æ°jqåŒã§ããå¿ èŠããããŸãã ããŒãæã€ãªããžã§ã¯ãã§ããå¿ èŠããããŸã
ãããŒã ããŒãžããªã©ã çŸæç¹ã§ã¯ãjqã¯ã®ãæ€çŽ¢ãããŒ/å€ã®ã¿ã䜿çšããŸã
ã¡ã¿ããŒã¿ã ã¡ã¿ããŒã¿ã¯ããŠãŒã¶ãŒã ã¢ãžã¥ãŒã«ã¡ã¿ å èµã
import çžå¯Ÿãã¹æåå as $ NAME [ ];
æ€çŽ¢ãã¹å ã®ãã£ã¬ã¯ããªãåºæºã«ããŠãæå®ããããã¹ã§èŠã€ãã£ãJSONãã¡ã€ã«ãã€ã³ããŒãããŸãã A
ã.jsonããµãã£ãã¯ã¹ãçžå¯Ÿãã¹æååã«è¿œå ãããŸãã ãã¡ã€ã«ã®ããŒã¿ã¯æ¬¡ã®ããã«ãªããŸã
ãšããŠå©çšå¯èœ $ NAME :: NAME.
ãªãã·ã§ã³ã®ã¡ã¿ããŒã¿ã¯å®æ°jqåŒã§ããå¿ èŠããããŸãã ããŒãæã€ãªããžã§ã¯ãã§ããå¿ èŠããããŸã
ãããŒã ããŒãžããªã©ã çŸæç¹ã§ã¯ãjqã¯ã®ãæ€çŽ¢ãããŒ/å€ã®ã¿ã䜿çšããŸã
ã¡ã¿ããŒã¿ã ã¡ã¿ããŒã¿ã¯ããŠãŒã¶ãŒã ã¢ãžã¥ãŒã«ã¡ã¿ å èµã
ã¡ã¿ããŒã¿ã®ãæ€çŽ¢ãããŒãååšããå Žåã¯ãæååãŸãã¯é åã®å€ïŒarray
æååã®ïŒ; ããã¯ãæäžäœã®æ€çŽ¢ãã¹ã®åã«ä»ããæ€çŽ¢ãã¹ã§ãã
ã¢ãžã¥ãŒã« ;
ãã®ãã£ã¬ã¯ãã£ãã¯å®å šã«ãªãã·ã§ã³ã§ãã é©åãªæäœã«ã¯å¿ èŠãããŸããã ããã¯åœ¹ç«ã¡ãŸã
ã§èªã¿åãããšãã§ããã¡ã¿ããŒã¿ãæäŸããç®çã®ã¿ ã¢ãžã¥ãŒã«ã¡ã¿ å èµã
ã¡ã¿ããŒã¿ã¯å®æ°jqåŒã§ããå¿ èŠããããŸãã 次ã®ãããªããŒãæã€ãªããžã§ã¯ãã§ããå¿ èŠããããŸã
ãããŒã ããŒãžãã çŸæç¹ã§ã¯ãjqã¯ãã®ã¡ã¿ããŒã¿ã䜿çšããŠããŸãããããŠãŒã¶ãŒãå©çšã§ããããã«ãªã£ãŠããŸã
ã㢠ã¢ãžã¥ãŒã«ã¡ã¿ å èµã
ã¢ãžã¥ãŒã«ã¡ã¿
ã¢ãžã¥ãŒã«åãå ¥åãšããŠåãåããã¢ãžã¥ãŒã«ã®ã¡ã¿ããŒã¿ããªããžã§ã¯ããšããŠåºåããŸãã
ã¢ãžã¥ãŒã«ã¯ããdepsãããŒã®é åå€ãšããŠïŒã¡ã¿ããŒã¿ãå«ãïŒã€ã³ããŒãããŸãã
ããã°ã©ã ã¯ããã䜿çšããŠãã¢ãžã¥ãŒã«ã®ã¡ã¿ããŒã¿ãã¯ãšãªã§ããŸãã
ããšãã°ãäžè¶³ããŠããäŸåé¢ä¿ãæ€çŽ¢ãããŠã³ããŒããããã³ã€ã³ã¹ããŒã«ããŸãã
onworks.netãµãŒãã¹ã䜿çšããŠjqããªã³ã©ã€ã³ã§äœ¿çšãã