Diary

Diary

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

Linux

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

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

Cloud SDK のようなかっこいいエラーメッセージを表示させる

この間 Cloud Run を初めて使ってみたのですが、Cloud SDK が使いやすすぎて感動しました。 今回はそのようなかっこいいコマンドを自作できるようになるべく、エラーメッセージの書き方から真似てみました。 [目次] 時間がないひとまとめ Cloud SDK でのエラ…

bash スクリプトはオンメモリにならない?

[目次] 環境 オンメモリ bash で検証 メインファイル(test.sh)の中身を変更する サブファイル(echo_script.sh)の中身を変更する おまけ:python で検証 終わりに 環境 - Machine: Raspberry Pi 4 Model B Rev 1.4 - OS: Linux ubuntu 5.4.0-1045-raspi - Bas…

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

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

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…

apache access_log 中の User-Agent まとめ

現在 apache のアクセスログの解析を自分でやってみようと進めております。アクセスログの中には UserAgent の欄が存在し、UserAgent には Scraping の際に苦しめられた思い出があります(以下記事)。 そこで今回は、自分の所有する色々な端末からどのよう…

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

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

gpio のアップデート手順で the package is missing, has been obsoleted のエラー

gpio のバージョンをアップデートしようとした際に次のようなエラーで詰まったので、解決策についてメモしておこうと思います。 環境 ubuntu 20.0.4 Raspberry Pi 4 Model B エラー内容 $ sudo apt install libc6:armhf libgcc1:armhf Reading package lists…

ubuntu で wget がインストールできない

ubuntu で wget がインストールできない 環境 ubuntu 20.0.4 Raspberry Pi 4 Model B $ cat /etc/os-release NAME="Ubuntu" VERSION="20.04.2 LTS (Focal Fossa)" ID=ubuntu ... $ uname -a Linux ubuntu 5.4.0-1038-raspi #41-Ubuntu SMP PREEMPT Thu Jun 1…

【sed】文頭と文末に文字挿入

(目次) 文頭に挿入 文末に挿入 両方のオプションを指定 おわりに 注)今回の記事の内容は mac(zsh)では動作確認ができませんでした。 文頭に挿入 1i(文字列) という形にして、シングルクォーテーションでかこんであげます。 「insert オプションを 1 行…

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

直前のコマンドを引数を変えて実行 例えば以下のように、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 回文判定 これを用いると、回文判定もできそうで…

sed 豆知識

最近知った sed の便利な機能を紹介していきます! [目次] sed -n '/正規表現/p' sed -n '/正規表現1/,/正規表現2/p' 続けて条件を指定できる グループ化 拡張正規表現 sed オリジナル (おまけ)+ は基本正規表現では使えない おわりに sed -n '/正規表現/p…

xargs で並列処理

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

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

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

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

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

strace コマンドでシステムコールをトレースする

straceコマンドが使えるようになると、システムコールをトレースすることが可能になり、低レイヤーにおけるプログラムのデバッグに大変役に立ちます。 用語説明 システムコール トレース strace インストール strace とは strace の使い方 use-case strace …

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 で uniq を実行する

awk の連想配列の機能を使って、(シンプルな)uniqコマンドと同様の機能を実装できることが分かったので紹介したいと思います。 uniq コマンドとは awk による uniq の実装 連想配列? 使い方 おわりに uniq コマンドとは awk の前にまず、uniqコマンドの復…

Terminal からプロセスを終了させる

今回はkillコマンドを用いてシグナルを飛ばし、プロセスを終了させてみようと思います。 kill コマンド signal とは kill のシグナル一覧 使い方 基本パターン 1回止めて一定時間後に再開する 覚えた方が良いシグナル KILL コマンドは最終手段 実は普段から…

ターミナルを使って、特定のファイルを見つける

ファイル検索をする方法として、今回はlocateとfindのコマンドを整理しておきます。 ファイル名はわかっている時はlocate、更新日時やサイズなどで詳細な検索をかけたいときはfind、と使い分けたらいいのかなと思っています。 locate 使い方 find オプション…

awk 入門

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