파일 지원, posix 유틸리티를 사용하여 구현된 키-값 저장소

파일 지원, posix 유틸리티를 사용하여 구현된 키-값 저장소

이런 일은 매우 흔한 일인 것 같아요.

읽기에는 어떤 posix 유틸리티가 사용되고 쓰기에는 어떤 유틸리티가 사용됩니까? 가장 일반적으로 사용되는 파일 형식은 무엇입니까?

그 자리에서 수정할 수 있나요?

내 첫 번째 생각은 json과 jq를 사용하는 것이었지만 유닉스 철학을 수용하는 데 관심이 있습니다.

편집하다:

나는 이것을 할 수 있는 표준 도구가 없다고 생각합니다. 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";
}

관련 정보