shellで重複行の件数を調べるワンライナー

expr $(cat <対象ファイル> | sort | wc -l) - $(cat <対象ファイル> | sort | uniq | wc -l)

<対象ファイル>部分を置き換えて使う。

やってることは単純、expr (ファイルの内容をソートして行数をカウントしたもの) - (ファイルの内容をソートして重複行を省いた行数をカウントしたもの)

全ユーザーのcronの設定を確認する

/var/spool/cron/ディレクトリ配下にユーザー名のファイルがあるのでそれが、それぞれのユーザーの設定しているcronです。

ls /var/spool/cron/
root user1 user2

などと表示される

OCamlでfloatの符号の反転

OCamlではデータ型ごとに別の演算子が定義されているので(二項演算だけでなく単行演算も)他のプログラミング言語のようにfloat型の数値の符号を反転させるときもちょっと注意が必要

vscodeの正規表現検索でファイルの先頭、ファイルの末尾にマッチさせて検索

ファイルの先頭にマッチさせる

^(?<!\n)

ファイルの先頭は行頭(^)に対して否定後読みを利用して、「2行目以降の行頭を除外した行頭」を検索することで実現

ファイルの末尾にマッチさせる

$(?!\n)

ファイルの末尾は行末($)に対して否定先読みを利用して、「次に改行が続かない行末」を検索することで実現。

tar ballが .gzだろうが.xzだろうが.zstだろうが解凍してやる!

TL;DR

#!/bin/bash

untar_by_file_type() {
  if [[ "$1" == "application/x-tar" ]]; then
    tar -xvf "$2" 
  elif [[ "$1" == "application/gzip" ]]; then
    tar -zxvf "$2" 
  elif [[ "$1" == "application/x-xz" ]]; then
    tar -Jxvf "$2" 
  elif [[ "$1" == "application/zstd" ]]; then
    tar --use-compress-program unzstd -xvf "$2"
  fi
}

untar() {
  if [[ "$1" == "" ]]; then
    echo "usage: untar <archive-filename>"
    exit 1
  fi
  untar_by_file_type "$(file -b --mime-type "$1")" "$1"
}

untar "$@"

パスの通ってるところに置くか、~/.zshrc やら ~/.bash_profileやらに関数を追記

[Android/kotlin] 端末にインストールしてあるアプリのパッケージを取得する

Android+kotlin インストールしてあるアプリのパッケージ名の取得

  val pm = packageManager
  val packageInfoList =
      pm.getInstalledPackages(PackageManager.GET_ACTIVITIES or PackageManager.GET_SERVICES)
  for (packageInfo in packageInfoList) {
      val pkg = pm.getLaunchIntentForPackage(packageInfo.packageName)
      if (pkg != null) {
          val packageName = packageInfo.packageName
          val className = pkg.component?.className ?: ""
          Timber.i(packageName)
          Timber.i(className)
      } else {
          Timber.i(packageInfo.packageName)
      }
  }

[Excel]JAN-13とインジケータからGTIN-14を計算する

JAN-13とインジケータからGTIN-14を計算する関数

TD, TL

ABCD
1インジケータJAN-13GTIN-14
214549414003260=CONCATENATE(TEXT(B2, “0”), LEFT(TEXT(C2, “0000000000000”), 12), TEXT(10 - MOD(SUM(VALUE(MID(C2, 1, 1)), VALUE(MID(C2, 3, 1)), VALUE(MID(C2, 5, 1)), VALUE(MID(C2, 7, 1)), VALUE(MID(C2, 9, 1)), VALUE(MID(C2, 11, 1)))+SUM(B2, VALUE(MID(C2, 2, 1)), VALUE(MID(C2, 4, 1)), VALUE(MID(C2, 6, 1)), VALUE(MID(C2, 8, 1)), VALUE(MID(C2, 10, 1)), VALUE(MID(C2, 12, 1)))*3, 10), “0”))

JAN,GTINのcheck digitの仕様

https://www.gs1jp.org/code/jan/check_digit.html

docker-compose cp がやりたい

複数のdockerコンテナを管理できる docker-compose コマンドですが、コンテナにファイルをコピーしようとdocker-compose cpをやろうとしてもそんなコマンドないよと言われてしまいます。 なのでその代わりに使える方法のメモ。