이런 일은 매우 흔한 일인 것 같아요.
읽기에는 어떤 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";
}