UJP - Copilotを使ってプログラム生成 UTF-8-MACをUTF8に変換

Life is fun and easy!

不正IP報告数

Okan Sensor
 
メイン
ログイン
ブログ カテゴリ一覧

ブログ - Copilotを使ってプログラム生成 UTF-8-MACをUTF8に変換

Copilotを使ってプログラム生成 UTF-8-MACをUTF8に変換

カテゴリ : 
Apple » mac mini » 2014
ブロガー : 
ujpblog 2025/2/7 18:32
 macOSでlsやfindコマンドでファイルリストを取り出すと,それはUTF-8-MAC形式となっていて,目視してると「が」に見えるが内部的には「か」と「”」のコードになっている.
 よってファイルリストを取り出してgrepかけてもヒットしないので,例えば「ドラマ」を検索するときは「トラ」と「マ」を繋げるなどの小細工で対応してた.
 iconvを使って変換できるのだけど,エラーが出ると停止してしまう.何でエラーが出たかも知りたい.プログラムを作る方法は脳内イメージできてもプログラム作るの面倒だ,という事で放置していたけど,AIに作らせてみた.

引用:
macosを使ってfindコマンドで取り出したNFD形式のファイルmedialist.orgを,UTF8に変換するbashスクリプトを作ってください. 変換する際には1行づつデータを取り出して,変換が成功した場合はseiko.txt,エラーになったデータはshippai.txtファイルに保管してください.

 このプロンプトで生成AIとしてMicrosoft Copilotを使った結果がこちら.

#!/bin/bash

input_file="medialist.org"
success_file="seiko.txt"
error_file="shippai.txt"

# ファイルの初期化
> "$success_file"
> "$error_file"

# ファイルが存在するか確認
if [ ! -f "$input_file" ]; then
    echo "入力ファイルが見つかりません: $input_file"
    exit 1
fi

# 1行ずつ読み込み、NFDをUTF-8に変換
while IFS= read -r line; do
    if normalized_line=$(echo "$line" | iconv -f UTF-8-MAC -t UTF-8 2>/dev/null); then
        echo "$normalized_line" >> "$success_file"
    else
        echo "$line" >> "$error_file"
    fi
done < "$input_file"

echo "変換が完了しました。成功したデータは $success_file に、エラーになったデータは $error_file に保存されました。"

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

・入力ファイルと出力ファイルを定義: input_fileに変換元のファイル名、success_fileに成功したデータを保管するファイル名、error_fileにエラーになったデータを保管するファイル名を指定します。
・ファイルの初期化: > "$success_file" と > "$error_file" によって、出力ファイルを初期化します(既存の内容がある場合は削除されます)。
・ファイルの存在チェック: 入力ファイルが存在するか確認し、存在しない場合はエラーメッセージを表示してスクリプトを終了します。
・1行ずつ読み込み、NFDをUTF-8に変換: while IFS= read -r line で入力ファイルの各行を読み込みます。iconvコマンドを使用してNFDをUTF-8に変換し、成功した場合はsuccess_fileに書き込み、エラーが発生した場合はerror_fileに書き込みます。
・変換完了メッセージの表示: 変換が完了した旨のメッセージを表示します。
このスクリプトを実行することで、NFD形式のファイルをUTF-8に変換し、成功とエラーの結果をそれぞれのファイルに保管します。

他にご質問やサポートが必要なことがあれば教えてくださいね。

 早速実行してみた.

juno:Copilot ujpadmin$ bash henkan.sh
変換が完了しました。成功したデータは seiko.txt に、エラーになったデータは shippai.txt に保存されました。
juno:Copilot ujpadmin$
 プログラムは正常に動作したのはまぁ期待通りなのだけど,実行結果についてプリントしてほしいというリクエストはしてないのに,気が利いている...当然私レベルのプログラミング能力は備えているというか,もう既にAIが私を超えてる自覚はある.

トラックバック


広告スペース
Google