10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
Hi,
I'm trying to make a grep to see if exists occurrences with a sentence like these:
grep -qi "message" file0 | grep -i $date | grep -vi "exception"
echo $?
1
If I execute without -q modifier I can find occurrences.
Someone could help me please?
Thanks and sorry for my English! (1 Reply)
Discussion started by: mierdatuti
1 Replies
2. Shell Programming and Scripting
Hello,
I'm trying to figure out how to speed up the following as I want to use multiple commands to search thousands of files.
is there a way to speed things up?
Example I want to search a bunch of files for a specific line, if this line already exists do nothing, if it doesn't exist add it... (4 Replies)
Discussion started by: f77hack
4 Replies
3. UNIX for Dummies Questions & Answers
I have a file that includes strings with special characters, eg
file1
line: 1 - special 1
line: = 4
line; -3
etc
How can I grep the lines of file1 from file2, line by line?
I used fgrep and egrep to grep a particular line and worked fine, but when I used:
cat file1|while read line;do... (2 Replies)
Discussion started by: FelipeAd
2 Replies
4. UNIX for Dummies Questions & Answers
Hi,
I have a number of files containing the information below.
"""""
Fundallinfo
6.3950 14.9715 14.0482
"""""
I would like to grep for Fundallinfo and use it to read the next line? I ideally would like to read the three numbers that follow in the next line and... (2 Replies)
Discussion started by: Paul Moghadam
2 Replies
5. Shell Programming and Scripting
Hello Colleagues,
I have a file that looks like below.
6-12731913-12731913
9230760143480
410018547148230
20131002193434+0500
20131002193434+0500
;20131002T161031000-10.50.241.21-21912131-1419034760, ver: 0
20131009
92220056296730
CC0P
abc
Core_Context_R1A
SMS
6-12726796-12726796... (14 Replies)
Discussion started by: umarsatti
14 Replies
6. Shell Programming and Scripting
here is what i want to achieve.. i have a file with below contents
cat fileName
blah blah blah
.
.DROP this
REJECT that
.
--sport 7800 -j REJECT --reject-with icmp-port-unreachable
--dport 7800 -j REJECT --reject-with icmp-port-unreachable
.
.
.
more blah blah blah
--dport 3306... (14 Replies)
Discussion started by: vivek d r
14 Replies
7. Shell Programming and Scripting
If a file consists of a thousands of line. There is a error line in the file which exists just before the line with word "Manish".
How could I write a script to grep the line with error.
Ex:-
If I have a UNIX file which contains the following:
bash-3.2$ cat unix.txt
Unix (officially... (4 Replies)
Discussion started by: manishdivs
4 Replies
8. Shell Programming and Scripting
I'm new to using sed and grep commands, but have found them extremely useful. However I am having a hard time figuring this one out:
Delete every line containing the word CEN and the next line as well.
ie. test.txt
blue
324 CEN
green
red
blue
324 CEN
green
red
blue
to produce:... (2 Replies)
Discussion started by: rocketman88
2 Replies
9. Shell Programming and Scripting
STEP 1
# Set variable
FILE=/tmp/mainfile
SEARCHFILE =/tmp/searchfile
# THIS IS THE MAIN FILE.
cat /tmp/mainfile
Interface Ethernet0/0 "outside", is up, line protocol is up
Hardware is i82546GB rev03, BW 100 Mbps
Full-Duplex(Full-duplex), 100 Mbps(100 Mbps)
MAC address... (6 Replies)
Discussion started by: irongeekio
6 Replies
10. UNIX for Dummies Questions & Answers
Hi all,
Would like to know how I could search for a string 'xyz' but have the output show the line plus the line above and/or below all lines found.
eg. search for xyz from file containing:
abc
12345
asdf xyz asdfds
wwwww
kjkjkj
ppppp
kkkxyz
eeee
zzzzz
and the output to... (2 Replies)
Discussion started by: sammac
2 Replies
HOVEL(3) Quick Database Manager HOVEL(3)
NAME
Hovel - the GDBM-compatible API of QDBM
SYNOPSIS
#include <hovel.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
typedef struct { char *dptr; size_t dsize; } datum;
extern char *gdbm_version;
extern gdbm_error gdbm_errno;
char *gdbm_strerror(gdbm_error gdbmerrno);
GDBM_FILE gdbm_open(char *name, int block_size, int read_write, int mode, void (*fatal_func)(void));
GDBM_FILE gdbm_open2(char *name, int read_write, int mode, int bnum, int dnum, int align);
void gdbm_close(GDBM_FILE dbf);
int gdbm_store(GDBM_FILE dbf, datum key, datum content, int flag);
int gdbm_delete(GDBM_FILE dbf, datum key);
datum gdbm_fetch(GDBM_FILE dbf, datum key);
int gdbm_exists(GDBM_FILE dbf, datum key);
datum gdbm_firstkey(GDBM_FILE dbf);
datum gdbm_nextkey(GDBM_FILE dbf, datum key);
void gdbm_sync(GDBM_FILE dbf);
int gdbm_reorganize(GDBM_FILE dbf);
int gdbm_fdesc(GDBM_FILE dbf);
int gdbm_setopt(GDBM_FILE dbf, int option, int *value, int size);
DESCRIPTION
Hovel is the API which is compatible with GDBM. So, Hovel wraps functions of Depot and Curia as API of GDBM. It is easy to port an appli-
cation from GDBM to QDBM. In most cases, you should only replace the includings of `gdbm.h' with `hovel.h' and replace the linking option
`-lgdbm' with `-lqdbm'. Hovel cannot handle database files made by the original GDBM.
In order to use Hovel, you should include `hovel.h', `stdlib.h', `sys/types.h' and `sys/stat.h' in the source files. Usually, the follow-
ing description will be near the beginning of a source file.
#include <hovel.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
An object of `GDBM_FILE' is used as a database handle. A database handle is opened with the function `gdbm_open' and closed with
`gdbm_close'. You should not refer directly to any member of a handle. Although Hovel works as a wrapper of Depot and handles a database
file usually, if you use the function `gdbm_open2' to open the handle, it is possible to make behavior of a handle as a wrapper of Curia
and treat a database directory.
Structures of `datum' type is used in order to give and receive data of keys and values with functions of Hovel.
typedef struct { char *dptr; size_t dsize; } datum;
`dptr' specifies the pointer to the region of a key or a value. `dsize' specifies the size of the region.
The external variable `gdbm_version' is the string containing the version information.
extern char *gdbm_version;
The external variable `gdbm_errno' is assigned with the last happened error code. Refer to `hovel.h' for details of the error codes.
extern gdbm_error gdbm_errno;
The initial value of this variable is `GDBM_NO_ERROR'. The other values are `GDBM_MALLOC_ERROR', `GDBM_BLOCK_SIZE_ERROR',
`GDBM_FILE_OPEN_ERROR', `GDBM_FILE_WRITE_ERROR', `GDBM_FILE_SEEK_ERROR', `GDBM_FILE_READ_ERROR', `GDBM_BAD_MAGIC_NUMBER',
`GDBM_EMPTY_DATABASE', `GDBM_CANT_BE_READER', `GDBM_CANT_BE_WRITER', `GDBM_READER_CANT_DELETE', `GDBM_READER_CANT_STORE',
`GDBM_READER_CANT_REORGANIZE', `GDBM_UNKNOWN_UPDATE', `GDBM_ITEM_NOT_FOUND', `GDBM_REORGANIZE_FAILED', `GDBM_CANNOT_REPLACE',
`GDBM_ILLEGAL_DATA', `GDBM_OPT_ALREADY_SET', and `GDBM_OPT_ILLEGAL'.
The function `gdbm_strerror' is used in order to get a message string corresponding to an error code.
char *gdbm_strerror(gdbm_error gdbmerrno);
`gdbmerrno' specifies an error code. The return value is the message string of the error code. The region of the return value is
not writable.
The function `gdbm_open' is used in order to get a database handle after the fashion of GDBM.
GDBM_FILE gdbm_open(char *name, int block_size, int read_write, int mode, void (*fatal_func)(void));
`name' specifies the name of a database. `block_size' is ignored. `read_write' specifies the connection mode: `GDBM_READER' as a
reader, `GDBM_WRITER', `GDBM_WRCREAT' and `GDBM_NEWDB' as a writer. `GDBM_WRCREAT' makes a database file or directory if it does
not exist. `GDBM_NEWDB' makes a new database even if it exists. You can add the following to writer modes by bitwise or:
`GDBM_SYNC', `GDBM_NOLOCK', `GDBM_LOCKNB', `GDBM_FAST', and `GDBM_SPARSE'. `GDBM_SYNC' means a database is synchronized after every
updating method. `GDBM_NOLOCK' means a database is opened without file locking. `GDBM_LOCKNB' means file locking is performed
without blocking. `GDBM_FAST' is ignored. `GDBM_SPARSE' is an original mode of QDBM and makes database a sparse file. `mode'
specifies mode of a database file as the one of `open' call does. `fatal_func' is ignored. The return value is the database handle
or `NULL' if it is not successful.
The function `gdbm_open2' is used in order to get a database handle after the fashion of QDBM.
GDBM_FILE gdbm_open2(char *name, int read_write, int mode, int bnum, int dnum, int align);
`name' specifies the name of a database. `read_write' specifies the connection mode: `GDBM_READER' as a reader, `GDBM_WRITER',
`GDBM_WRCREAT' and `GDBM_NEWDB' as a writer. `GDBM_WRCREAT' makes a database file or directory if it does not exist. `GDBM_NEWDB'
makes a new database even if it exists. You can add the following to writer modes by bitwise or: `GDBM_SYNC', `GDBM_NOLOCK',
`GDBM_LOCKNB', `GDBM_FAST', and `GDBM_SPARSE'. `GDBM_SYNC' means a database is synchronized after every updating method.
`GDBM_NOLOCK' means a database is opened without file locking. `GDBM_LOCKNB' means file locking is performed without blocking.
`GDBM_FAST' is ignored. `GDBM_SPARSE' is an original mode of QDBM and makes database sparse files. `mode' specifies a mode of a
database file or a database directory as the one of `open' or `mkdir' call does. `bnum' specifies the number of elements of each
bucket array. If it is not more than 0, the default value is specified. `dnum' specifies the number of division of the database.
If it is not more than 0, the returning handle is created as a wrapper of Depot, else, it is as a wrapper of Curia. `align' speci-
fies the basic size of alignment. The return value is the database handle or `NULL' if it is not successful. If the database
already exists, whether it is one of Depot or Curia is measured automatically.
The function `gdbm_close' is used in order to close a database handle.
void gdbm_close(GDBM_FILE dbf);
`dbf' specifies a database handle. Because the region of the closed handle is released, it becomes impossible to use the handle.
The function `gdbm_store' is used in order to store a record.
int gdbm_store(GDBM_FILE dbf, datum key, datum content, int flag);
`dbf' specifies a database handle connected as a writer. `key' specifies a structure of a key. `content' specifies a structure of
a value. `flag' specifies behavior when the key overlaps, by the following values: `GDBM_REPLACE', which means the specified value
overwrites the existing one, `GDBM_INSERT', which means the existing value is kept. The return value is 0 if it is successful, 1 if
it gives up because of overlaps of the key, -1 if other error occurs.
The function `gdbm_delete' is used in order to delete a record.
int gdbm_delete(GDBM_FILE dbf, datum key);
`dbf' specifies a database handle connected as a writer. `key' specifies a structure of a key. The return value is 0 if it is suc-
cessful, -1 if some errors occur.
The function `gdbm_fetch' is used in order to retrieve a record.
datum gdbm_fetch(GDBM_FILE dbf, datum key);
`dbf' specifies a database handle. `key' specifies a structure of a key. The return value is a structure of the result. If a
record corresponds, the member `dptr' of the structure is the pointer to the region of the value. If no record corresponds or some
errors occur, `dptr' is `NULL'. Because the region pointed to by `dptr' is allocated with the `malloc' call, it should be released
with the `free' call if it is no longer in use.
The function `gdbm_exists' is used in order to check whether a record exists or not.
int gdbm_exists(GDBM_FILE dbf, datum key);
`dbf' specifies a database handle. `key' specifies a structure of a key. The return value is true if a record corresponds and no
error occurs, or false, else, it is false.
The function `gdbm_firstkey' is used in order to get the first key of a database.
datum gdbm_firstkey(GDBM_FILE dbf);
`dbf' specifies a database handle. The return value is a structure of the result. If a record corresponds, the member `dptr' of
the structure is the pointer to the region of the first key. If no record corresponds or some errors occur, `dptr' is `NULL'.
Because the region pointed to by `dptr' is allocated with the `malloc' call, it should be released with the `free' call if it is no
longer in use.
The function `gdbm_nextkey' is used in order to get the next key of a database.
datum gdbm_nextkey(GDBM_FILE dbf, datum key);
`dbf' specifies a database handle. The return value is a structure of the result. If a record corresponds, the member `dptr' of
the structure is the pointer to the region of the next key. If no record corresponds or some errors occur, `dptr' is `NULL'.
Because the region pointed to by `dptr' is allocated with the `malloc' call, it should be released with the `free' call if it is no
longer in use.
The function `gdbm_sync' is used in order to synchronize updating contents with the file and the device.
void gdbm_sync(GDBM_FILE dbf);
`dbf' specifies a database handle connected as a writer.
The function `gdbm_reorganize' is used in order to reorganize a database.
int gdbm_reorganize(GDBM_FILE dbf);
`dbf' specifies a database handle connected as a writer. If successful, the return value is 0, else -1.
The function `gdbm_fdesc' is used in order to get the file descriptor of a database file.
int gdbm_fdesc(GDBM_FILE dbf);
`dbf' specifies a database handle connected as a writer. The return value is the file descriptor of the database file. If the
database is a directory the return value is -1.
The function `gdbm_setopt' has no effect.
int gdbm_setopt(GDBM_FILE dbf, int option, int *value, int size);
`dbf' specifies a database handle. `option' is ignored. `size' is ignored. The return value is 0. The function is only for com-
patibility.
If QDBM was built with POSIX thread enabled, the global variable `gdbm_errno' is treated as thread specific data, and functions of Hovel
are reentrant. In that case, they are thread-safe as long as a handle is not accessed by threads at the same time, on the assumption that
`errno', `malloc', and so on are thread-safe.
SEE ALSO
qdbm(3), depot(3), curia(3), relic(3), cabin(3), villa(3), odeum(3), ndbm(3), gdbm(3)
Man Page 2004-04-22 HOVEL(3)