2025年2月12日水曜日

AIの力を借りでシェルスクリプトを作る時代がやってきた

はじめに

 電子工作では、PICを¥使うことが多く


PICの購入は、秋月電子からよく買っています。


秋月電子のWebでPICを検索すると


8ページ近くも表示されます。


型番がわかっていれば、これでも良いのですが


新しい製品は出ていないか?


探そうとすると、困難です。


何とかしたいと考えた

そこで、秋月のWebから PIC検索結果をテキストコピーして


シェルスクリプトを書いて一覧表作れば良いのではないか。



しかし、シェルスクリプトを1から作るには、


それなりの時間が必要です。


もっと、簡単にやる方法はないのか?


今流行りのAIに助けてもらったらどうか。


日頃よく使っている、CoPilotやってみることにした。


Microsoft Copilot: Your AI companion


AIは他にも色々あるが、新しく使い方を覚えるのが

面倒なので、今回はこれにした。



依頼のやり方

 お手本があれば、それを使うのもありだと思いますが


今回の場合、そうしたものは無いので


次のようにして、依頼事項を伝えた。


入力データは、パターンデータが複数並んでいる。


パターンの例は、次のとおり


PIC

ーーーーーーーーーーーーーーーー ここから

PICマイコン PIC16F1705-I/P

AAA

PICマイコン PIC16F1705-I/P <= 抜きだす

型番:PIC16F1705-I/P

販売コード:108578

1個

¥230(税込) <= 抜きだす

在庫あり

購入可能数:

1337個

購入数量



かごに入れる

ーーーーーーーーーーーーーーーー ここまで


欲しい一覧表

ーーーーーーーーーーーーーーーー ここから

PICマイコン PIC12C PICマイコン PIC12C509A-04/P (ワンタイム品)

PICマイコン PIC12F PICマイコン PIC12F1501-I/P


ーーーーーーーーーーーーーーーー ここまで


PIC12Fは、製品名称から抜き出して作成する。



CoPilotの表示

凡そ1から2秒で、次の内容が表示された


ーーーーーーーーーーーーーーーー ここから

次のBashスクリプトを使って、指定された処理を行うことができます。このスクリプトは、AWKBashを使ってデータの抽出と整形を行います。


```bash

#!/bin/bash


# 入力ファイルの名前

input_file="input.txt"

output_file="output.tsv"


# テンポラリファイルを作成

temp_file=$(mktemp)


# 必要な行を抽出して連結

awk '/PICマイコン|¥[0-9]+\(税込\)/' $input_file | paste - - | while IFS=$'\t' read -r col1 col2; do

    name=$(echo "$col1" | awk '{print $1}')

    series=$(echo "$col1" | awk '{print $2}' | grep -o 'PIC[0-9A-Za-z]*')

    model=$(echo "$col1" | awk '{print $2}' | grep -o '[0-9A-Za-z]*-[A-Za-z0-9/]*')

    price=$(echo "$col2")

    echo -e "${name}\t${series}\t${model}\t${price}" >> $temp_file

done


# ヘッダを追加して最終的な出力ファイルを作成

echo -e "1\t2\t3\t4" > $output_file

cat $temp_file >> $output_file


# テンポラリファイルを削除

rm $temp_file


echo "処理が完了しました。結果は $output_file に出力されました。"

```


このスクリプトの説明は以下の通りです:

1. 入力ファイルと出力ファイルの名前を設定します。

2. 必要な行を抽出して連結します。AWKを使って「PICマイコン」と「価格(¥◯◯◯(税込))」の行を抽出し、pasteを使って2行ずつ連結します。

3. 各行を処理して、名称、シリーズ、型式、価格を抽出します。AWKを使って各フィールドを抽出します。

4. ヘッダ行を出力ファイルに追加し、テンポラリファイルの内容を出力ファイルにコピーします。

5. テンポラリファイルを削除します。


このスクリプトを使って、所定の処理を行い、タブ区切り形式のファイルを生成できます。問題があれば、教えてくださいね。


ーーーーーーーーーーーーーーーー ここまで


スクリプトの処理の説明もあるので


全体の動作の把握はとても楽。


試してみた

評価データをスクリプトに入れて試してみた


若干の不具合はあるものの、基本的動作はしている。


いくつかの不具合は、使う側が手直しをすれば


完成となるレベルです。



フレームワークとしては十分に使える。



まとめ


CoPilotにやりたいことを伝えると


1から2秒でスクリプトが書き出された。


スクリプトの説明もついてくる。


私には、この時間でスクリプトの見本を書き出す技量はない。


スクリプトは、完璧ではないが、

フレームワークだと思えば決して悪くない。


試してみて思ったことは、


AIが提示してくる内容をわかる程度の


スキルが使う側に求められている



これからも、


Python, Javascript, PICマイコンなどに広げて


使っていきたい。









 

0 件のコメント:

コメントを投稿

手作り電磁石の力をゼムクリップで計ってみた

手作りした電磁石があるので どのくらいの錘を吊り下げられるか 計ってみることにした 調べると、 バネ計りを使う方法などが紹介されているが 家にはないので、身近なもので試す。 大きなおもりの下にゼムクリップを ぶら下げていき、クリップが落ちた前が 限界とすると...