æ¥æ¬èªã®ãã«ããã¡ã€ã«ãèªã¿ãã
UNIXã§ã¯æ £äŸçã«ã³ãã³ãã®ããã¥ã¢ã«ãèªãããã®ãmanãã³ãã³ããçšæãããŠãããã ããBUW(Bash on Ubuntu on Windows)ã®ããŒã¹ãšãªãUbuntu 14.04 LTS(ããå æž16.04 LTSã«æŽæ°ãããªããã®ããšæãã®ã ãâŠâŠ)ã«ã¯ãããŒã·ãã¯ãªããã±ãŒãžã¯ã€ã³ã¹ããŒã«ãããŠãããã®ã®ãæ¥æ¬èªåãããããã¥ã¡ã³ãã¯æªã€ã³ã¹ããŒã«ã ã
![]() |
ãman grepããå®è¡ããç¶æ ãæ¢å®ã®ç¶æ ã§ã¯è±èªã®ããã¥ã¢ã«ã衚瀺ããã |
Ubuntuã§ã¯ãå©çšè åãæ¥æ¬èªçããã¥ã¢ã«ããŒãžããã±ãŒãžãmanpages-jaããšãéçºè åãæ¥æ¬èªçããã¥ã¢ã«ããã±ãŒãžãmanpages-ja-devããçšæãããŠãããããããã€ã³ã¹ããŒã«ããããããsudo apt-get install manpages-ja manpages-ja-dev -yããå®è¡ããã°ãè³æ¥µç°¡åã«æ¥æ¬èªã®ããã¥ã¢ã«ãé²èЧã§ããããã¡ããè±èªã®æ¹ãããã¥ã¢ã«ã®é®®åºŠããããLinuxã䜿ãã®ã§ããã°ç°¡åãªè±èªã¯äœ¿ããã¹ãã ããšããæèŠãããã ãããã ããæ¥æ¬èªã«æ £ããæ¹ãªãããã¯ãæ¥æ¬èªã§èªããæ¹ãå®å¿ã ãå¿ ãããæšå¥šããããšã§ã¯ãªãããæ¥æ¬èªããã¥ã¢ã«ãå¿ èŠãšããèªè 諞æ°ã¯è©ŠããŠã»ããã
![]() |
ãman grepããå®è¡ããç¶æ ãã芧ã®ãšããããã¥ã¢ã«ã®å å®¹ãæ¥æ¬èªã«ãªã |
Bashããè«æ±æžãã©ãŒãããã«ã¢ã¯ã»ã¹ãã
ããŠãè€æ°ã®Excelããã¯ãã¡ã€ã«ã«åæ£ããæ°å€ããŸãšããŠæŸããããšããã·ãã¥ãšãŒã·ã§ã³ã¯å°ãªããªããã·ãŒãåäœã§ãŸãšããŠããã°ãExcelå éšã®åç §ã§å®çµã§ããããå€éšãã¡ã€ã«ãåç §ããæ¹æ³ããããçè ãç°ãªãExcelããã¯ãã¡ã€ã«éã§æ°å€ãåç §ãããä»çµã¿ã§ç®¡çããŠãããããã¡ã€ã«ã®å Žæã倿Žããã ãã§ãã¡ã«ãªã£ãŠããŸãããããã€ãææ¬çãªè§£æ±ºãããªããã°ãªããªããšææ¡äžã ã
ããã¯ããŠãããã·ã§ã«ã¹ã¯ãªããã¯é¢åãªäœæ¥ãç°¡æœã«æžãŸããã®ãäž»ãªç®çã§ãããæ¥åžžæ¥åãèªååãã空ããæéã§ä»ã®äœæ¥ãè¡ããšããã¢ãããŒãã¯ãçŸåšã®ITãåãå·»ãç°å¢ã«é¡äŒŒããã®ã§ã¯ãªãã ããããå眮ããé·ããªã£ãŠããŸã£ãããäŸãã°ãã©ã«ããŒå ã«ããè«æ±æžãªã©æ±ºãŸã£ããã©ãŒãããã®Excelããã¯ãããç¹å®ã®ã»ã«ã«å ¥åããæ°å€ãåãåºãããã®åç®ãåºåã§ããã°äŸ¿å©ã ããããã®ãããªåæã§äœæããã®ãä»åã®ã·ã§ã«ã¹ã¯ãªããã§ããããã€ãã©ããã䜿ãã®ç°å¢ã«åãããŠå€æ°ã®å€ã倿Žããã·ã§ã«ã¹ã¯ãªããã«å®è¡æš©éãäžããŠããã詊ãé ãããã
#!/bin/bash
BaseDir=/mnt/c/Users/kaz/Desktop
FileDir=$BaseDir/Test
TmpDir=$BaseDir/_TMP
TmpFile=$BaseDir/_num.txt
OutputFile=$BaseDir/Output.txt
if [ ! -d $TmpDir ]; then
mkdir $TmpDir
fi
cd $FileDir
for File in $(ls *.xlsx); do
unzip -qq $File -d $TmpDir
cat $TmpDir/xl/worksheets/sheet2.xml | perl -pe 's/></>\n</g;' | grep -A 2 -e r=\"F49\" | tail -n 1 | perl -pe 's/<[^>]*>//g' >> $TmpFile
rm -rf $TmpDir
done
cat $TmpFile | awk 'NF>0 {n+=$1} END {printf "%f",n/NR}'
echo
rm $TmpFile
ååãšåãããã«Excelããã¯ãå±éããã»ã«ã®å 容ãèªã¿åããšãããã®ã ããä»åã®ã¿ãŒã²ããã¯ãxl/sharedStrings.xmlãã§ã¯ãªããxl/worksheets/sheet2.xmlãã§ãããExcelããã¯ã¯åè ã®ãã¡ã€ã«ã«æåååç §çªå·ãšæååãæ ŒçŽããã·ãŒãäžã®æ°å€ã¯åŒå¿è ã®ãã¡ã€ã«ã«æ ŒçŽããŠããããã ãäžå³ã¯å ãšãªãExcelããã¯ãã¡ã€ã«ã®1ã€ã ããã芧ã®ããã«æŒç®çµæã®æ°å€ããsheet2.xmlããã¡ã€ã«ã«æ ŒçŽãããŠããããã ããäžå³ã§ã¯ã132000ããšããæ°å€ã ãããã¡ã€ã«å ã§ã¯ã131999.76ããšèšé²ãããŠããããã®èŸºãã¯Excelããã¯ã®ä»æ§è©±ã«ãªãã®ã§ä»åã¯å²æããã
ä»åã¯14ïœ18è¡ç®ã«ããforæã®ã«ãŒãã§ãExcelããã¯ã®å±éãšæå®ããã»ã«ã®æ°å€ãgrepã§æœåºãtailã³ãã³ããšperlã³ãã³ãã§äžèŠãªæ å ±ãåé€ããçµæã倿°ãTmpFileãã«èšé²ããŠããããã®çµæãforæã®ã«ãŒããçµãã£ãŠããawkã³ãã³ãã§èšç®ãè¡ãã®ã20è¡ç®ã ããªã17è¡ç®ãš22è¡ç®ã®rmã³ãã³ãã¯å±éããExcelããã¯ã®æ®éªžãäžæãã¡ã€ã«ãåé€ããããã«äœ¿çšããŠããããã®ã·ã§ã«ã¹ã¯ãªãããå®è¡ãããšãã»ã«F49ã®æ°å€ãåç §ããã»ã«C18ã®å å®¹ãæœåºãããã®åç®ã衚瀺ããã
![]() |
ãã¡ãããµã³ãã«ãã¡ã€ã«ã®1ã€ããã®ããã«ç¹å®ã®ã·ã§ã«ã«èšé²ãããæ°å€ãæœåºãã |
ä»åawkã䜿çšããã®ã¯å¿çšãå©ãããã ãäŸãã°åèšã§ã¯ãªãå¹³åå€ãå¿ èŠãªå Žåã¯ãn/NRãã«å€æŽããã°ãç°¡åã«æ±ãããããawkã®æŒç®æ¹æ³ã«é¢ããŠã¯å°éã®æžç±ãªã©ãåç §ããŠã»ããã
é¿ä¹ 接è¯å(Cactus)















