ファイルサポート、posixユーティリティを使用して実装されたKey-Valueストア

ファイルサポート、posixユーティリティを使用して実装されたKey-Valueストア

このようなことは非常に一般的なことだと思います。

読み取りにはどのようなposixユーティリティが使用され、書き込みにはどのユーティリティが使用されますか?最も一般的に使用されるファイル形式は何ですか?

その場で修正できますか?

私の最初の考えはjsonとjqを使用することでしたが、Unixの哲学に対応することに興味があります。

編集する:

私はこれを行うことができる標準的なツールがないと思います。grep/awk/sedただし、これを使用すると、ロック、書式設定、特殊文字などの他の多くの問題について心配する必要があります。https://unix.stackexchange.com/a/21950/551103

「ロック、書式、特殊文字」にまったく気にしないとどうでしょうか?誰かが私に最小限の実装を提供できますか?grep/awk/sed

ベストアンサー1

英数字キー値の場合:

kvfile="kvfile"

put() {
    if grep -q "^${1}=" "$kvfile"; then
        sed -i "s/^${1}=.*$/${1}=${2}/" "$kvfile"
    else
        echo "${1}=${2}" >> "$kvfile"
    fi
}

get() {
    grep "^${1}=" "$kvfile" | awk -F= '{printf "%s", $2}'
}

Martin Kealeyは実際にスクリプトを書く方法を知っており、sedawkのように提案します。

put() {
    sed -i "/^$1=/{ h ; s/=.*/=$2/ ; } ; $ { p; g; /./d; s/^$/$1=$2/ ; }" "$kvfile";
}

get() { 
    awk -F= -vk="$1" '$1 == k{ print $2 }' "$kvfile";
}

おすすめ記事