我想这是一件很常见的事情。
哪个 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 实际上知道如何编写脚本sed
并awk
建议:
put() {
sed -i "/^$1=/{ h ; s/=.*/=$2/ ; } ; $ { p; g; /./d; s/^$/$1=$2/ ; }" "$kvfile";
}
get() {
awk -F= -vk="$1" '$1 == k{ print $2 }' "$kvfile";
}