コピペコードで快適生活

明日使えるソースを自分のために

シェル

macでUNIXtime・日時文字列の相互変換をする

% date -j -f "%Y-%m-%d %T" "2020-10-25 11:18:00" "+%s" 1603592280 % date -j -f "%s" "1552735080" "+%Y-%m-%d %T" 2019-03-16 20:18:00

シェルで古いファイルを一括で消す

バックアップスクリプトでよくやるのだけど、毎回書き方を忘れているのでメモ。 # -execオプションを使う版 # {} が対象のファイルパスに置換されて実行される。 # -mtime +3 => 最終更新日時が、過去〜4(3+1)日前のファイルを表示する find ${TARGET_DIR} -…

シェルスクリプトのアタマに添えるおまじない

シェルスクリプトを書くときに、アタマに添えるおまじないをメモ。 #!/bin/sh # set -e # スクリプトの実行中にエラー(exit 0以外)が発生すると、そこでスクリプトが終了させる。 # というかつけてないと、エラーしても次の処理に進むから怖い。 # # set -u …

シェルでヒアドキュメントを使う

そういればやり方知らなかったのでメモ。 # これで標準出力できる。 cat << EOS hoge fuga piyo EOS # ヒアドキュメント内で変数展開できる。 # 標準出力になるので変数に代入したいときはバッククォート使う。 params=`cat << EOS { "login_id": "${LOGIN_I…

シェルスクリプトで対話的に選択肢を選ばせる

よく忘れるのでメモしておく。 # # 入力値チェック/セット # echo 'CloudFrontログを抽出します。' echo '対象ドメインを番号で指定してください' echo ' 1) a.example.com 2) b.example.com 3) c.example.com ' read num case ${num} in 1) DOMAIN='a.examp…

シェルのtestコマンド

シェルのtestコマンドの理解が怪しかったので、使い方をメモしておく。 #!bin/sh # $?==0 で正常終了 # 数値の比較 ## 1 == 1 test 1 -eq 1; echo $? ## 1 != 2 test 1 -ne 2; echo $? ## 1 < 2 test 1 -lt 2; echo $? ## 2 > 1 test 2 -gt 1; echo $? ## 1 …

シェルでクロス集計するメモ

クロス集計をBash(とawk)だけで実装した話 より学んだことメモ 処理の流れ 1.必要なカラムの抽出 2.クロス集計の行と列の要素を取り出す。 # クロス集計表の行になる部分を抽出してユニーク化&ソート cat table.csv | cut -f 1 -d , | sort -u > rownam…

初めの方のシェル芸勉強会メモ

初めの方の問題見たらとてもピュアだった。2012年10月27日 Hbstudy#38 ファイルの一括変換 # カレントディレクトリの中からUtilの文字をHogeに変えてDesktopに保存する。 # ※basenameはディレクトリ名を除外したファイル名を返すコマンド grep -r "Util" ./.…

第37回シェル芸勉強会メモ

https://b.ueda.tech/?post=20180901_shellgei_37 にて学んだことメモ。 Q1 FizzBuzzのアニメーション seq 100 | gsed '0~3s/.*/Fizz/;0~5s/.*/Buzz/;0~15s/.*/FizzBuzz/' | # 0~3s みたいな書き方で3行ごとに置換を行う gawk '{printf("%08s\n", $1)}' | # …

第38回҈҈҉҈҈҉シ҈҉ェ҈҉ル҈҉芸҈҉勉҈҉強҈҉会メモ

https://b.ueda.tech/?post=shellgei_38 より学んだことメモ xxd コマンド 対象を16進数でダンプする/16進数から復元する。 pオプションはpostscript形式でダンプするの意味。 # ダンプする echo "ほげほげ" | xxd -p # 復元する echo "ほげほげ" | xxd -p |…

シェルでbase64のエンコード・デコード

$ echo -n '{"hoge": "fuga"}' | base64 eyJob2dlIjogImZ1Z2EifQ== $ echo -n 'eyJob2dlIjogImZ1Z2EifQ==' | base64 -D {"hoge": "fuga"}

GNU版のコマンドセットをMacに入れておく

メモ $ brew install coreutils $ brew install gnu-sed $ brew install gawk $ brew tap homebrew/dupes $ brew install homebrew/dupes/grep 第29回シェル芸勉強会:福岡サテライト : ATND より転載

SJISのCSVからシェルで集計するまでの流れ

CSVのデータを集計を、シェルでさくっと終わらせたいときのためのメモです。 まずは文字コードを変換 だいたいCSVはSJISであることが多いので、シェルで正しく処理できるようにUTF-8に変換します。 # 使える文字コード一覧 iconv -l # f(from)の文字コード #…

シェルでファイル名・ディレクトリ名を一斉置換する

# ファイル find ./ -type f | grep old_word | awk '{print $0 " " $0 }' | awk '{sub("old_word", "new_word", $2); print $1 " " $2}' | xargs -n2 mv # ディレクトリ find ./ -type d | grep old_word | awk '{print $0 " " $0 }' | awk '{sub("old_word…

curlでたまに使うオプション

たまにしか使わなくて忘れていることがあるのでメモ。 随時追加していく。 # SSLエラーを無視 curl -k http://example.jp/ # リダイレクト対応 curl -L http://example.jp/ # リクエストにヘッダー追加 curl -H "key1: val1" -H "key2: val2" http://example…

シェルでいつか使うかもしれないコマンド・オプションまとめ

便利かどうかはわからないけど、いつか使うかもしれないコマンド・オプションを随時追加していく。 # 素数を出す # factorコマンドは素因数分解するコマンド seq 1 20 | gfactor | awk 'NF==2{print $2}' # 文字の16進数変換 # -p で 16進数にして出す # -p …

シェルで便利だったコマンド&オプションまとめ

随時追加していく。 # grepでOR検索 cat file.txt | grep -e hoge -e fuga # grepで前後行も出力 # -A -> 後の行数 # -B -> 前の行数 cat file.txt | grep -A 10 -B 5 hoge -e fuga # xargsでパイプで渡された値を任意の場所に突っ込む cat file.txt | grep …

sedコマンドの基本を知っておく

基本系 eオプションにコマンドを渡して使う コマンドにはs(置換), d(行削除), p(行抽出)などがある。 cat input.txt | sed -e 'コマンド' # もしくは sed -e 'コマンド' input.txt 使用例 # 正規表現で文字列の置換を行う cat input.txt | sed -e 's/xxx/XXX…

{print $1}しか知らない自分のためのAWKメモ

awkのことをきちんと知っておこうと思って、下記を読ませていただいたときのメモ書きです。 http://antibayesian.hateblo.jp/entry/2014/09/15/162605 条件マッチする行を抽出 # 10にマッチする行を抽出する。 awk /10/ trees.txt # 両方の条件を満たす行を…

シェルの便利コマンドメモ(cat, paste, join, comm)

処理対象ファイル a.txt 1. abc 2. def 4. xyzb.txt 1. 123 4. xyz 5. 456 cat ファイルを結合する $ cat a.txt b.txt 1.abc 2.def 4.xyz 1.123 4.xyz 5.456 paste ファイルを横に並べて結合する $ paste a.txt b.txt 1.abc 1.123 2.def 4.xyz 4.xyz 5.456 j…

ファイル、またはディレクトリだけに chmod するシェルのメモ

ファイルの場合 find . -type f -print | xargs chmod 644 ディレクトリの場合 find . -type d -print | xargs chmod 755

コマンドプロンプトでCygwinのシェルを使う

DLLコピー C:\app\cygwin\bin\cygwin1.dllを C:\Windows\System32配下にコピーする。 環境変数設定 システム環境変数のPATHに下記を追加。 C:\app\cygwin\bin C:\app\cygwin\usr\bin C:\app\cygwin\usr\local\bin 最後に 再度ログインする。これで使える。※C…

ディレクトリの容量を表示する - duコマンド

書式 du [オプション] [ディレクトリ名|ファイル名] 主なオプション -a # ディレクトリ内の各ファイルに対しても使用量を表示する -b # 結果をバイト単位で表示する -k # 結果をキロバイト単位で表示する(デフォルト) -s # 合計サイズのみを表示する -h # …

シェルでカレントディレクトリ配下のテキストファイルの中身を一斉置換

よく忘れるのでメモ。 # カレントディレクトリ以下 hoge を含むファイルを確認 grep -rn "hoge/" ./. # hoge を fuga に一斉置換 grep -rl "hoge" ./. | xargs sed -i -e "s/hoge/fuga/g" ${1} # コピペ用 FROM=hoge TO=fuga grep -rl "${FROM}" ./. | xargs…