スキップしてメイン コンテンツに移動

投稿

8月, 2020の投稿を表示しています

bash ファイル名に半角スペースが入っているファイル一覧の取得

シュルはループをしなくても下記の例のように、ファイル一覧から、ファイル名をパラメーターにして、自分のプログラムに渡して順番に実行することができます。まあ、一番いい方法かどうかは置いといて、やりたいことができるならわるくないとは思います。 #!/bin/bash TD=/tmp/all2mp4-$$ ls -l ~/myfiles/*.anyext | awk '{print "bash ~/myprogram.sh " gsub(/ /,"\\ ",$9)}'> $TD bash $TD sleep 1 rm $TD しかし、ファイル名にスペースが入っている場合、上記のawkからちゃんとファイルを取得することができなかったので、下記に書き直しました。それから、自分のプログラムに渡した場合、スペースを¥(バックスラッシュ)でエスケープしないとちゃんとパラメーターとして渡せない点を注意する必要がありますね。 #!/bin/bash TD=/tmp/all2mp4-$$  ls -l ~/myfiles/*.anyext | awk '{tmp=$1;for (i = 2; i <= 8; i++) tmp=tmp " " $i; gsub(" "," ",$0); gsub(tmp " ","",$0); gsub(" ","\\ ",$0); print "bash ~/myprogram.sh " $0}'> $TD bash $TD sleep 1 rm $TD 【註】$$ 実行されたシェル自身のプロセスIDです。 (日付が一桁のとき、2連スペースになるため、2連スペースを一つスペースに置換する修正しました)  

bash ファイル名に半角スペースが入っているファイル一覧の取得

シュルはループをしなくても下記の例のように、ファイル一覧から、ファイル名をパラメーターにして、自分のプログラムに渡して順番に実行することができます。まあ、一番いい方法かどうかは置いといて、やりたいことができるならわるくないとは思います。 #!/bin/bash TD=/tmp/all2mp4-$$ ls -l ~/myfiles/*.anyext | awk '{print "bash ~/myprogram.sh " gsub(/ /,"\\ ",$9)}'> $TD bash $TD sleep 1 rm $TD しかし、ファイル名にスペースが入っている場合、上記のawkからちゃんとファイルを取得することができなかったので、下記に書き直しました。それから、自分のプログラムに渡した場合、スペースを¥(バックスラッシュ)でエスケープしないとちゃんとパラメーターとして渡せない点を注意する必要がありますね。 #!/bin/bash TD=/tmp/all2mp4-$$  ls -l ~/myfiles/*.anyext | awk '{tmp=$1;for (i = 2; i <= 8; i++) tmp=tmp " " $i; gsub(" "," ",$0); gsub(tmp " ","",$0); gsub(" ","\\ ",$0); print "bash ~/myprogram.sh " $0}'> $TD bash $TD sleep 1 rm $TD 【註】$$ 実行されたシェル自身のプロセスIDです。 (日付が一桁のとき、2連スペースになるため、2連スペースを一つスペースに置換する修正しました)  

DPC公開データのクレンジング(汎用性のある横持ち表を縦持ちデータに変換するツールとしてのつもり^^;)

 厚労省が公開したデータがいけていない(さらに複雑な分析ができない)からDPC公開データのクレンジングのためにExcel のVBAプログラミングで簡単なツールを作りました。 https://www.mhlw.go.jp/stf/shingi2/0000196043_00003.html 抽出手順 1.データの範囲を検知(行数、列数) 2.表頭を値として取得 3.値が2種類(件数、在院日数。8/4=2)があるから同時に2列を書き出す 4.次の表頭グループからデータを抽出 Excelファイルを下記からダウンロードできます。   Excel xlsm 公開するか未定ですが、自動的に厚労省のURLからダウンロードして、表側と表頭を自動的に判別してCSVに吐き出すか、データベースに入れる拡張をする予定です。 【20210309追記】 MDC04の表の場合、件数・在院日数の下位項目数は均等ではない(4列か3列か)以前公開のExcelでは処理できないことが判明しました。修正バージョンは下記にアップロードしました。昨年10月に直したのに、アップロードするのはずっと忘れていました。 修正版

DPC公開データのクレンジング(汎用性のある横持ち表を縦持ちデータに変換するツールとしてのつもり^^;)

 厚労省が公開したデータがいけていない(さらに複雑な分析ができない)からDPC公開データのクレンジングのためにExcel のVBAプログラミングで簡単なツールを作りました。 https://www.mhlw.go.jp/stf/shingi2/0000196043_00003.html 抽出手順 1.データの範囲を検知(行数、列数) 2.表頭を値として取得 3.値が2種類(件数、在院日数。8/4=2)があるから同時に2列を書き出す 4.次の表頭グループからデータを抽出 Excelファイルを下記からダウンロードできます。   Excel xlsm 公開するか未定ですが、自動的に厚労省のURLからダウンロードして、表側と表頭を自動的に判別してCSVに吐き出すか、データベースに入れる拡張をする予定です。 【20210309追記】 MDC04の表の場合、件数・在院日数の下位項目数は均等ではない(4列か3列か)以前公開のExcelでは処理できないことが判明しました。修正バージョンは下記にアップロードしました。昨年10月に直したのに、アップロードするのはずっと忘れていました。 修正版

Excel VBAワークシートActiveせずにCellの行番と列番で範囲コピペ

  ワークシートを配列(左からのワークシートの順番)か、あるいはワークシート名で指定し、コピー元を特定できる Range(Worksheets(1).Cells(1, 1), Worksheets(1).Cells(6, 6)).Copy 貼り付け先もRange(cells(1,1),Cells(6,6)).Addressで行番と列番で指定できる (1) 配列指定 Worksheets(3).Paste Destination:=Worksheets(3).Range(Range(Cells(1, 1), Cells(1, 100)).Address) ‘ (2) ワークシート名指定 Worksheets(“出力”).Paste Destination:=Worksheets(3).Range(Range(Cells(1, 1), Cells(1, 100)).Address) (3) ワークシートのオブジェクト名指定 Sheet4.Paste Destination:=Worksheets(3).Range(Range(Cells(1, 1), Cells(1, 100)).Address)

Excel VBAワークシートActiveせずにCellの行番と列番で範囲コピペ

  ワークシートを配列(左からのワークシートの順番)か、あるいはワークシート名で指定し、コピー元を特定できる Range(Worksheets(1).Cells(1, 1), Worksheets(1).Cells(6, 6)).Copy 貼り付け先もRange(cells(1,1),Cells(6,6)).Addressで行番と列番で指定できる (1) 配列指定 Worksheets(3).Paste Destination:=Worksheets(3).Range(Range(Cells(1, 1), Cells(1, 100)).Address) ‘ (2) ワークシート名指定 Worksheets(“出力”).Paste Destination:=Worksheets(3).Range(Range(Cells(1, 1), Cells(1, 100)).Address) (3) ワークシートのオブジェクト名指定 Sheet4.Paste Destination:=Worksheets(3).Range(Range(Cells(1, 1), Cells(1, 100)).Address)