Diary

Diary

日々学んだことをアウトプットする場として初めてみました

Linux-ワンライナー

正規表現でキャメルケースをスネークケースにする

ユースケース HogeFuga → hogeFuga みたいな『先頭のみの大文字小文字を変換する』ということがしたいケースがありました。 同じ要領で『キャメルケース → スネークケース(逆も)』ができたのでその紹介です。 (注: 以下コマンドの結果はすべて GNU sed に…

bash で標準エラー出力のリダイレクト・パイプラインを扱う

今更感ですが、標準エラー出力をリダイレクトやパイプに渡す方法をメモしておきます。 [目次] 標準エラー出力とは 標準エラー出力を特定のファイルにリダイレクトさせる 標準エラー出力を切り捨てる 標準エラー出力をパイプに渡す

bash のみで progress bar をつくる

特に bash のみで作る理由はないですが、こんなことも出来るんだという紹介です。 [目次] echo のオプション r c progress bar 実装

はてなブログ API の結果を xml から json へ変換(xq, sed, jq)

はてなブログ API を叩いた時の備忘録と、その際 jq を使ってみたのでそのメモになります。 レスポンスが xml だったので、xq と sed と jq を使って一歩ずつ理想とする形に近づけました。 結論 xq を使って xml を json にしたら要素が 1 つの時は string, …

git log を使って 1 日分のコード差分行数を計算

git log を使って、特定のユーザーが何行進捗を出したかを確認する例のメモです。 特に、initial commit などのコミットメッセージに代表されるプロジェクト(フレームワーク)の初期ファイルを、コミットメッセージから無視するようにしました。 特定のユー…

bash でコマンドの実行結果をファイルとして扱う

プロセス置換(Process Substitution)を用います。使い方と一緒に、ぜひ名前も覚えましょう。 使い方 # 通常のファイル入力の場合 $ cat test.txt # コマンドの実行結果をファイルとして扱う場合 $ cat <(echo "hoge from echo command") hoge from echo co…

連続する文字を tr で削除する

trの-sオプションを利用すると、「連続するN文字を1文字にすること」が可能です 例を見てみます 基本的な使い方 $ echo pieeeeeen pieeeeeen # tr -s "変換を行いたい文字" $ echo pieeeeeen | tr -s e pien 無駄に多い改行を削除 また次の例では、入れすぎ…

ワンライナーで棒グラフを作る

ダウンロード時などに、進捗を表すグラフをターミナルでも見かけることが多く、「自分でもグラフっぽいの作れるんじゃないか!」と思ったので作ってみました 棒グラフを作ってみた 具体的には、二列のデータ(二列目は数値)から以下のようなグラフを作るこ…

apache のアクセスログを linux コマンドでチョット確認してみた

自宅のラズパイ上に apache でサーバーを立てており、Android アプリのバックエンドとして利用しています。 今回はそのログを少し覗いてみたところ、個人的に面白い結果が得られたので共有をしたいと思います。 HTTP ステータスコード集計 $ cat `ls access.…

.gz ファイルをまとめて cat する

apache のログなどは、貯めていくと勝手に .gz ファイルに圧縮されるかと思います。 例えば、自分のラズパイ上の apache のログは以下のようになっています。 /var/log/apache2$ ls access.log access.log.13.gz access.log.5.gz access_log error.log.12.gz…

ターミナルでゼロ埋めを行う方法

ターミナル上でゼロ埋め(ゼロパディング)を行いたいことがあったので、その方法についてまとめてみたいと思います。 [目次] ゼロ埋めを行う方法 printf seq seq + awk (おまけ)ゼロ埋めされた値を計算に使う おわりに ゼロ埋めを行う方法 printf format …

【ターミナル】直前のコマンドを引数を変えて実行

直前のコマンドを引数を変えて実行 例えば以下のように、1-10 までの素数を求めるワンライナーがあります。 $ seq 10 | factor | awk 'NF == 2' 動作を確かめた後で様々な数値で試したいとき、そのまま 10 を書き換えてもよいですが以下の方法があります。 $…

Linux コマンドで文字コードを変換する

今回は、Shift_JIS と utf-8 の変換などについて扱います。 [目次] 文字コード xxd で実験してみる 元に戻す 1バイトずつチェック 2進数から文字列を復元 nkf Shift_JIS のファイルを UTF-8 に変換する UTF-8 のファイルを Shift_JIS に変換する おまけ ま…

分数の足し算引き算を AWK で

前回の記事で、AWK を使ってどのように分数の約分ができるのか、ということをやりました。 今回は、引き続き足し算と引き算をさせてみようと思います。 前回のまとめ 以下のようにして約分を行いました。詳しい方針は過去記事をご覧ください $ echo 6/8 | tr…

AWK で約分をやってみた

[目次] AWK で約分 (おまけ)ruby, python なら一瞬 おわりに AWK で約分 方針: 素因数分解して、分子の素因数は +1, 分母は -1 とカウントして、AWK の連想配列に突っ込む 最終結果として、a[] の値がプラスのものはその数だけ分子に、マイナスのものは分…

ターミナル上で分数計算を行う(ruby ワンライナー)

1/3 + 1/2といった分数計算を、ruby を使ってターミナル上で実行してみたいと思います。 ruby ワンライナーの簡単な使い方の説明と、実際に適応させるところまで紹介いたします。 [目次] ruby ワンライナー 基本的なオプション ruby の分数クラスを使う 標準…

ターミナル上で文字の順番を入れ替える

[目次] 行の中で最初と最後を入れ替える 回文判定 行を入れ替える rs コマンド おわりに 行の中で最初と最後を入れ替える rev (=reverse) を使います $ echo hoge | rev egoh $ echo "123 456" | rev 654 321 回文判定 これを用いると、回文判定もできそうで…

xargs で並列処理

xargs では -P オプションを使うことで並列処理させることが可能です。 # -P2 の 2 の数は何個並列で走らせるかを表す $ ... | xargs -P2 [目次] 最大実行数の確認 実験 並列処理されてること 論理 CPU を超えた場合 おわりに 最大実行数の確認 論理 CPU の…

ワンライナーでid のかぶりがないかチェック

ワンライナーでid のかぶりがないかチェック id というのはユニークである必要がありますが、自分で命名してると下手し被ってしまうことがあると思います。 そこで今回は、HTML をユースケースとして、id に被りがないかをチェックするワンライナーを書いて…

どうしても python をワンライナーで使いたい

ここでいうワンライナーとは、 python ファイルを作ることなく、ターミナルの上でちゃちゃっと python のいいところを使っちゃおうよ って話です。 -c コマンド 使い方 Tips 引数の渡し方 for 文について おわりに -c コマンド どうやら調べてみると、-c オ…

awk で四捨五入を行う

AWK は非常に強力な言語なのですが、残念なことに標準の関数として四捨五入を行うことができません。 そこで今回、任意の桁に対して四捨五入を行う方法をメモしておこうと思います。 小数点以下で四捨五入する 任意の桁で四捨五入する おわりに 小数点以下で…

ワンライナーで九九の表を生成する

「ワンライナーで九九の表を生成する」というシェル芸の問題は、多くの解法が存在し非常にいい問題なのではないかと感じました。 そこで、自分が今思いつく答えをいくつかメモしておこうと思います(今回は細かいコマンドの使い方は紹介しておりません) ぜ…

awk で for 文を書く

ワンライナーで awk 内で for 文を回したくなることが多々あるのですが、いつも方法を忘れるのでこれを機にまとめておきたいと思います。 基本的な使い方 各行の和を求める (おまけ)九九表を作る おわりに 基本的な使い方 基本は、 for( i=<start>; i<=<end>; <increment> ){ acti</increment></end></start>…

awk で小数点以下を含む計算するときの注意

awk で小数点以下を含む計算するときの注意 少数を含む計算の注意点 小数点以下が有限の桁で記述できないような少数は、ある程度の桁数で近似を行うしかないため、以下のような(一見)不思議な現象が起きます。 $ awk 'BEGIN {print int(70.21 * 100)}' 702…

awk 入門

awk 入門 awk の使い方を簡単に紹介し、「awk 何それ?」っていう状態から「awk 使ったことあるよ」っていう状態になることを目指します。 awk 入門 awk オプション 基本パターン 各フィールドへのアクセス方法 pattern の記述方法 特殊な pattern 省略形 変…

POSIX 組み込みシェル変数まとめ

POSIX 組み込みシェル変数まとめ POSIX 組み込みシェル変数まとめ 一覧紹介 (すこし)詳細説明 $ ? PIPESTATUS 0 ! ENV PATH PPID PS1, PS2, PS4 おわりに 一覧紹介 以下のまとめの中から興味あるものが見つかったら、是非説明の方も見て試していただきたい…

コマンドで xxx の部分にランダムな数字を埋め込む

コマンドで xxx の部分にランダムな数字を埋め込む 前回の記事で、rigコマンドを用いて擬似個人情報を出力する方法を紹介した。 blog.hatena.ne.jp $ rig Edgar Durham 342 Stonehedge Blvd Yonkers, NY 10701 (914) xxx-xxxx 目標 最後の電話番号のところが…

Linux で擬似的な個人情報を得る

Linux で擬似的な個人情報を得る 今回はターミナル上で実行できるコマンドrigを使って個人情報を出力する方法を紹介します 目次 Linux で擬似的な個人情報を得る 実行環境 rig オプション紹介 データセットを作る (おまけ)データフォルダを覗いてみる おわ…

おもしろUnixコマンド

おもしろUnixコマンド 今回紹介したいおもしろUnixコマンドは次の3つです banner sl curl parrot.live 環境 なお以降の例は次の環境で試したものです $ cat /etc/os-release NAME="Ubuntu" VERSION="20.04.2 LTS (Focal Fossa)" ... $ uname -r 5.4.0-1038-…

シェルコマンド「man」の使い方

シェルコマンド「man」の使い方 自分がターミナルに触れる機会が増えるにつき、manコマンドが便利だと思いましたのでその紹介をしたいと思います。 使い方がうる覚えなコマンドをターミナル上でぱぱっと検索したい時に使っています。 シェルコマンド「man」…