Skip to the content. Bash-Oneliner I am glad that you are here! I was working on bioinformatics a few years ago and was amazed by those single-word bash commands which are much faster than my dull scripts, time saved through learning command-line shortcuts and scripting. Recent years I am working on cloud computing and I keep recording those useful commands here. Not all of them is oneliner, but i
#!/bin/sh urlencode() { # https://qiita.com/ik-fib/items/cc983ca34600c2d633d5 echo "$1" | nkf -WwMQ | sed 's/=$//g' | tr = % | tr -d '\n' } HOST="jp-east-1.computing.api.nifcloud.com" ACCESS_KEY="<YOUR ACCESS KEY>" SECRET_KEY="<YOUR SECRET KEY>" TIMESTAMP="`date -u +'%FT%T.%2NZ' | sed -e 's/:/%3A/g'`" declare -A params=( ["Action"]="DescribeVolumes" ["VolumeId.1"]="VolumeId" ["SignatureMethod"]="H
docker で環境を作っていて docker compose build 時に設定ファイルに環境変数から取得した値を自動で設定したかった。ファイルの変更は sed コマンドを使えば良さそうだったので置換の正規表現に環境変数を展開して置換できれば良さそうです。 変数を使う場合は正規表現を " (ダブルコーテーション) で囲う必要がある " (ダブルコーテーション) は変数展開がされるが、' (シングルコーテーション) だと変数名そのものが正規表現に埋め込まれれしまう。 $ THEME_NAME=soleil $ echo '/path/to/theme/' | sed -e "s/\/path\/to\/theme\//\/path\/to\/$THEME_NAME\//g" /path/to/soleil/ # シングルコーテーションだと変数名のまま置換されてしまう $ echo '/p
grep では 後方参照ができないので、代替案を考えることになる。 方法1基本的な方法 -o マッチした箇所だけを取り出す -o を使って、マッチした箇所だけを取り出す。 cat out.txt | \grep -Po 'Abc.*Xyz' 方法2 先読み+あとよみ 先読み・後ろ読みにマッチした箇所だけを取り出す -o を組み合わせる。 cat out.txt | \grep -Po '(?<=Abc).*(?=Xyz)' 方法3 perl や ruby などワンライナーを使う もはや、grep ではないが、代替案としては行ける cat out.txt | ruby -pe 'sub(/^Abc(.*)Xyz/, "\\1")' 方法4 sed で置換する もはや、grep ではない。が代替案としては行けるし、sedは手軽に使える。 cat out.txt | sed -nr 's/Abc
Linux(shellコマンド) ファイル検索 dir/ 配下の.py または .ipynb ファイルで hogehoge を含むものを検索したい grep -r --include='*.py' --include='*.ipynb' "hogehoge" dir/ dir/ 配下の特定の文字列を含むファイルを一括で置換したい 例えば、 calender のタイポを一括で修正したい場合 find dir/* \( -name "*.py" -o -name "*.ipynb" \) | xargs sed -e 's/calender/calendar/g' -i mac OS の場合, POSIX sed が標準で入っているので上書きしてしまってから実行するとよい brew install gnu-sed --with-default-names git 複数に分かれたコミットをまとめ
はじめに CSV のようにカンマ区切りの文字列をそれぞれのフィールドに分割するにはどうするか?というネタです。よく見るネタなのですが、良いとは言えないコードが多いのでまとめたいと思います。 なお例として CSV を扱っていますが、主題は文字列の分割 (split) と結合 (join) なので、ダブルクォートでくくることでカンマや改行も入れられるなどという本気の CSV 対応はしません。仕様が複雑なのでそのようなファイルを扱う場合は別の言語のよく知られたライブラリを使うことをおすすめします。この記事で扱う CSV とは各フィールドがカンマで区切られているというだけのものです。 前提 一行のデータは分割して位置パラメーターに入れる 一行の文字列を分割した結果は、位置パラメータ ($1, $2, $3, ...) に代入するのがおすすめです。位置パラメータは POSIX 準拠(つまり bash
macOS標準添付 sed コマンドはGNU拡張非対応のため、下記のようなワンライナーが期待通り動作しない。
ULAのPrefixを生成するなら openssl rand -hex 5 | sed -r 's|^(.{2})(.{4})(.{4})|fd\1:\2:\3::/48|' ローカルアドレスのプレフィックスの場合は、 prefix に16のネットワーク・アドレスを付ける。まとめてランダム生成すると。 openssl rand -hex 7 | sed -r 's|^(.{2})(.{4})(.{4})(.{4})|fd\1:\2:\3:\4::/64|' 実行例 root@router01:~# openssl rand -hex 5 | sed -r 's|^(.{2})(.{4})(.{4})|fd\1:\2:\3::/48|' fd8b:9230:0268::/48 root@router01:~# openssl rand -hex 7 | sed -r 's|^(.{2})(.
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く