Category Archive: shell

post by yamamoto | | 0 | 548 views

匿名化用 openssl コマンド sha256でダイジェスト

openssl rand 3*1024 | openssl dgst -sha256 | sed "s/(stdin)= //" 【解説】 ・まず openssl rand で 3kb のバイナリファイルを作成し、またパイプを通して openssl dgst -sha256 でダイジェストを生成する、最後に sed で (stdin)=を除けば、 いろいろなプログラミング言語で 変数に代入できます。 例えば、shell の場合: dgst=openssl rand 3*1024 | openssl dgst -sha256 | sed "s/(stdin)= //" echo $dgst 【出力例】f142f690487be57f5ce41f71a3ae1c3928a8ecc1bc2b06e2e33c8363673d3c22

post by yamamoto | | 0 | 326 views

awk で awk を作る!

例えば、201404-201406 の DPC EFファイルがありました。

これらのファイルの先頭に年月(YYYYMM)と tab を追加したい場合は、下記の awkでいけます。

しかし、ファイルが多い場合、上記のコマンドを手入力するのは間違いやすいし、大変労力が要る作業になります。 もちろん、Excelを使えば、201404のところを列にして、マウスポインターで引っ張ると201409列まで作って、 後はできた内容をテキストエディタへコピーして、tab を space に置換えすれば、できないことはありません。 というか、いままで良くExcelの方法でやって来ました。 では、awk ならどうなるかというと下記の一行コマンドで上記6行のコマンドを作り出せます。簡単でしょう!!!

簡単に説明しましょう。 まず ls -l して、ファイルの一覧を出力します。すると9番目のカラム($9、OSによって異なる場合もある)はファイル名になります。 ファイル名から substr関数で 15文字目から4文字を取得します。 後は、\047でシングルクォーテーションすれば、完成です。 (ダブルクォーテーションは \" でエスケープします)

post by yamamoto | | 0 | 522 views

一行コマンド ファイル一覧

データ処理した途中の履歴ファイルの一覧を出すため、 この一行で出せます。 ls -l section_structure_*.csv |awk '{print $9}' section_structure_1341980953.csv section_structure_1341999986.csv section_structure_1342001339.csv section_structure_1342060694.csv section_structure_1342061705.csv section_structure_1342066473.csv section_structure_1342066838.csv section_structure_1342067415.csv section_structure_1342067939.csv section_structure_1342068406.csv section_structure_1342069234.csv section_structure_1342070617.csv section_structure_1342071515.csv section_structure_1342072417.csv section_structure_1342073485.csv  

post by yamamoto | | 0 | 789 views

一行コマンド ログファイルのコピー

 ls -tl /var/log/apache2 | grep -e "05-25" | awk '{print "sudo cp /var/log/apache2/"$8 " ."}' > test.sh  ; sh test.sh いまのディレクトリに apache2 の5月25日に更新されたログファイルをコピーする。 あるいは、 ls -tl /var/log | grep -e "May 25" | awk '{print "sudo cp /var/log/"$9 " ."}' > test.sh  ; sh test.sh