*.gdbm 파일을 조작하는 CLI 프로그램이나 명령이 있습니까?

*.gdbm 파일을 조작하는 CLI 프로그램이나 명령이 있습니까?

Modem-manager-gui모든 메시지를 *.gdbm파일에 저장합니다. 파일을 삭제하면 sms.gdbm메시지가 모두 삭제되는데 쉘 프로그램을 실행하여 받은 메시지와 보낸 메시지를 별도로 삭제하려고 합니다. 나는 노력했다 man gdbm. 매뉴얼을 이해하지 못하는 것 같아요.

답변1

가장 쉬운 방법은 아마도 더 강력한 스크립팅 언어로 임시 도구를 작성하는 것입니다.

방금 Ruby로 하나 썼어요GDBM(오류 처리 없음):

#!/usr/bin/ruby

require 'gdbm'

dbfile, op, key, val, = ARGV

GDBM.open(dbfile) do |db|
  case op
  when "set"
    db[key] = val
  when "get"
    puts db[key]
  when "rm"
    db.delete(key)
  else
    db.each do |k, v|
      puts "#{k.inspect} = #{v.inspect}"
    end
  end
end

이 스크립트를 gdbmtool다음과 같이 gdbm에서 키 값을 조작할 수 있습니다.

$ chmod +x gdbmtool
$ ./gdbmtool database.gdbm set abc def
$ ./gdbmtool database.gdbm set 123 456
$ ./gdbmtool database.gdbm get abc
def
$ ./gdbmtool database.gdbm
"abc" = "def"
"123" = "456"
$ ./gdbmtool database.gdbm rm abc
$ ./gdbmtool database.gdbm
"123" = "456"

관련 정보