文件支持,使用 posix 实用程序实现的键值存储

文件支持,使用 posix 实用程序实现的键值存储

我想这是一件很常见的事情。

哪个 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";
}

相关内容