EnglishFrenchSpanish

Ad


OnWorks favicon

ffe - Online in the Cloud

Run ffe in OnWorks free hosting provider over Ubuntu Online, Fedora Online, Windows online emulator or MAC OS online emulator

This is the command ffe that can be run in the OnWorks free hosting provider using one of our multiple free online workstations such as Ubuntu Online, Fedora Online, Windows online emulator or MAC OS online emulator

PROGRAM:

NAME


ffe - flat file extractor

SYNOPSIS


ffe [options]...

DESCRIPTION


ffe is a program for extracting fields from flat file records and displaying them in
different formats. ffe relies on the configuration file to control input file structure
and the output format.

OPTIONS


ffe accepts the following options:

-c, --configuration=file
Read the configuration from file, default is ~/.fferc.

-s, --structure=STRUCTURE
Input file is processed using the structure STRUCTURE.

-p, --print=FORMAT
Use output format FORMAT for printing. All printing can be suppressed using format
no. Original data is printed using format raw.

-o, --output=NAME
Write output to NAME instead of standard output.

-f, --field-list=LIST
Print only fields and constants specified in comma separated list LIST.

-e, --expression=EXPRESSION
Print only those records for which the EXPRESSION evaluates to true.

-a, --and
Expressions are combined with logical and, default is logical or.

-X, --casecmp
Expressions are evaluated case insensitive.

-v, --invert-match
Print only those records which don't match the expression.

-l, --loose
An invalid input line does not cause program to abort.

-r, --replace=FIELD=VALUE
Replace FIELDs contents with VALUE in output. VALUE can contain same directives as
output option data.

-d, --debug
All invalid input lines are written to file ffe_error_<pid>.log.

-I, --info
Show the structure information in configuration file and exit.

-?, --help
List all available options and their meanings and exit.

-V, --version
Show version of program and exit.

All remaining arguments are names of input files; if no input files are specified, then
the standard input is read.

Expressions (option -e, --expression)
Expression can be used to select specific records comparing field values.

If the value starts with string "file:" then the rest of the value is considered as a file
name. Every line in the file is used as value in comparison. Record will be selected if
one or more values evaluates true.

Expression notation:

field=value
A record will be selected if the field field is equal to the value value.

field^value
A record will be selected if the field field starts with the value value.

field~value
A record will be selected if the field field contains the value value.

field!value
A record will be selected if the field field is not equal to the value value.

field?value
A record will be selected if the field field matches the regular expression in
value.

FFE CONFIGURATION


ffe uses the configuration file for extracting fields from the input file and for
formatting the fields for output. Every line or binary block of the input file is
considered as a record. Default configuration file is ~/.fferc but another file can be
given with '-c' option.

Configuration file for ffe is a text file. The file may contain empty lines. Commands are
case-sensitive. Comments begin with the #-character and end at the end of the line.
The string and char definitions can be enclosed in double quotation '"' characters. char
is a single character. string and char can contain following escape codes:
'\a','\b','\t','\n','\v','\f', '\r', '\"' and '\#'. Character '\' can be escaped as '\\'.

Command Substitution allows the output of a command to replace parts of the configuration
file. Syntax for command substitution is:
`command`
The command is executed and the `command` is substituted with the standard output of the
command, with any trailing newlines deleted. Command substitutions may not be nested.

Before executing the command ffe sets few environment variables:

FFE_STRUCTURE
The name of the structure given using -s,--structure.

FFE_OUIPUT
The name of the output file given using -o,--output.

FFE_FORMAT
The name of the output format given using -p,--print.

FFE_FIRST_FILE
The name of the first input file.

FFE_FILES
A list of all input files.

If variable is already set it will not be replaced.

Input file structure
Input file structures are specified with keyword structure:

structure name {options...}

Options must be ended with newline, options are:

type fixed|binary|separated [char] [*]
Fields in the input are fixed length text fields, fixed length binary fields or
text fields separated by char. If * is given, multiple sequential separators are
considered as one. Default separator is comma.

quoted [char]
Fields may be quoted with char, default quotation mark is double quotation mark
'"'. A quotation mark is assumed to be escaped as \char or doubling the mark as
charchar in input. Non escaped quotation marks are not preserved in output.

header first|all|no
Controls the occurrence of the header line. Default is no. If set as first or all,
the first line of the first input file is considered as header line containing the
names of the fields. First means that only the first file has a header, all means
that all files have a header, although the names are still taken from the header of
the first file. Header line is handled according the record definition, meaning
that the name positions, separators etc. are the same as for the fields.

output name
All records belonging this structure are printed according output format name.
Default is to use output named as 'default'.

record name {options...}
Defines one record for a structure. A structure can contain several record types.

Record options:
id position string

rid position regexp
Identifies a record in the input file. Records are identified by the string or by
the regular expression in regexp in input record position position. For fixed
length and binary input the position is the byte position of the input record and
for separated input the position means the position'th field of the input record.
Positions start from one.

Id's are required only if input structure contains several record types with equal
lengths or field counts. Non printable characters can be escaped as \xnn where nn
is the hexadecimal value of the character.

A record definition can contain several id's, then all id'd must match the input
line (id's are combined with logical and).

In a multi-record binary structure every record must have at least one id.

field name|FILLER|* [length]|* [lookup]|* [output]
Specifies one field in a text input structure. length is mandatory for fixed length
input structure except for the last field. If the last field of a fixed length
input structure has a * in place of length then the last field can have arbitrary
length.

Length is also used for printing fields in fixed length format using the %D or %D
directive. The order of fields in configuration file is essential, it specifies the
field order in a record.

If '*' is given instead of the name, then the 'name' will be the ordinal number of
the field, or if the 'header' option has value 'first' or 'all', then the name of
the field will taken from the header line (first line of the input).

If lookup is given then the fields contents is used to make a lookup in lookup
table lookup. If length is not needed (separated format) but lookup is needed, use
asterisk (*) in place of length definition.

If output is given field is printed using output output. Use asterisk in place of
lookup if lookup is not needed.

Naming the field as FILLER causes field not to be printed in output.

field name|FILLER|* [length]|type [lookup]|* [output]
Specifies one field in a binary input structure. All other features are same as for
the text structure except the type parameter. type specifies field data type and
length and can have the following values:

char Printable character.

short Short integer having current system length and byte order.

int Integer having current system length and byte order.

long Long integer having current system length and byte order.

llong Long long integer having current system length and byte order.

ushort Unsigned short integer having current system length and byte order.

uint Unsigned integer having current system length and byte order.

ulong Unsigned long integer having current system length and byte order.

ullong Unsigned long long integer having current system length and byte order.

int8 8 bit integer.

int16_be Big endian 16 bit integer.

int32_be Big endian 32 bit integer.

int64_be Big endian 64 bit integer.

int16_le Little endian 16 bit integer.

int32_le Little endian 32 bit integer.

int64_le Little endian 64 bit integer.

uint8 Unsigned 8 bit integer.

uint16_be Unsigned big endian 16 bit integer.

uint32_be Unsigned big endian 32 bit integer.

uint64_be Unsigned big endian 64 bit integer.

uint16_le Unsigned little endian 16 bit integer.

uint32_le Unsigned little endian 32 bit integer.

uint64_le Unsigned little endian 64 bit integer.

float Float having current system length and byte order.

float_be Float having current system length and big endian byte order.

float_le Float having current system length and little endian byte order.

double Double having current system length and byte order.

double_be Double having current system length and big endian byte order.

double_le Double having current system length and little endian byte order.

bcd_be_len Bcd number having length len and nybbles in big endian order.

bcd_le_len Bcd number having length len and nybbles in little endian order.

hex_be_len Hexadecimal data in big endian order having length len.

hex_le_len Hexadecimal data in little endian order having length len.

If length is given instead of the type, then the field is assumed to be a printable
string having length length. String is printed until length characters are printed
or NULL character is found.

Bcd number (bcd_be_len and bcd_le_len) is printed until len bytes are read or a
nybble having hexadecimal value f is found. Bcd number having big endian order is
printed in order: most significant nybble first and least significant nybble second
and bcd number having little endian order is printed in order: least significant
nybble first and most significant nybble second. Bytes are always read in big
endian order.

Hexadecimal data (hex_be_len and hex_le_len) is printed as hexadecimal values. Big
endian data is printed starting from the lower address and little endian data
starting from the upper address.

field-count number
Same effect as having field * number times. Because length is not specified, this
works only with separated structure.

fields-from record
Fields for this record are the same as for record record.

output name
This record is printed according output format name. Default is to use output
format specified in the structure.

level number [element_name|*] [group_name]
Level can be used if the contents of a file should be printed as hierarchical
multi-level nested form document. Use * instead of the element name if it is not
needed. number is the level of the record, starting from number one (highest
level), element_name is the name for the record, group_name is used to group
records in the same and lower levels. Only number is mandatory parameter.

record-length strict|minimum

strict Input record length and field count must match the record definition in
order to get it processed. This is default value.

minimum Input record length and field count can be the same or longer as defined
for the record. The rest of the input line is ignored.

Output definitions
There can be several output definitions in the configuration file. Format can be selected
with '-p' option. Default format is named as 'default'.

output name|default {options...}
Defines one output format. Output named as 'default' will be used if none is given
for structure or record, or none is given with option '-p'.

There is two predefined output formats no and raw. no suppresses all printing and
raw prints the original input data.

Output options
Pictures in output definition can contain printf-style %-directives:

%f Name of the input file.

%s Name of the current structure.

%r Name of the current record.

%o Input record number in current file.

%O Input record number starting from the first file.

%i Byte offset of the current record in the current file. Starts from zero.

%I Byte offset of the current record starting from the first file. Starts from zero.

%n Field name.

%t Field contents, without leading and trailing whitespaces.

%d Field contents. Binary integer is printed as a decimal value. Floating point number
is printed in the style [-]ddd.ddd, where the number of digits after the
decimal-point character is 6. Bcd number is printed as a decimal number and
hexadecimal data as consecutive hexadecimal values.

%D Field contents, right padded to the field length (requires length definition for
the field).

%C Field contents, right padded to the field length (requires length definition for
the field). Output field is cutted if input field is longer that field length.

%x Unsigned hexadecimal value of a binary integer. Other fields are printed using
directive %d.

%l Value from lookup.

%L Value from lookup, right padded to the field length (requires length definition for
the field).

%e Does not print anything, causes still the "field empty" check to be performed. Can
be used when only the names of non-empty fields should be printed.

%p Fields start position in a record. For fixed structure this is field's byte
position in the input line and for separated structure this is the ordinal number
of the field. Starts from one.

%h Hexadecimal dump of a field. Byte values are printed as consecutive xnn values,
where the nn is the hexadecimal value of a byte. Data is printed before any endian
conversion.

%g Group name given by the keyword group_name in record definition.

%m Element name given by the keyword element_name in record definition.

%% Percent sign.

file_header picture
Picture is printed once before file contents.

file_trailer picture
Picture is printed once after file contents.

header picture
If specified, then the header line describing the field names is printed before
records. Every field name is printed according the picture using the same
separator and fields length as defined for the fields. Picture can contain only %n
directive.

data picture
Field contents is printed according picture.

lookup picture
If field is mapped to lookup table, this picture will be used instead of picture
from data option. If not given, then picture from data will be used.

separator string
All fields are terminated by string, except the last field of the record. Default
is not to print separator.

record_header picture
picture is printed before the record content. Default is not to print header.

record_trailer picture
picture is printed after the record content. Default is newline.

justify left|right|char
Fields are left or right justified. char justifies output according the first
occurrence of char in the data picture. Default is left.

indent string
Record contents is intended by string. Field contents is intended by two times the
string. Default is not to indent.

field-list name1,name2,...
Only fields or constants named as name1,name2,... are printed, same effect as has
'-f' option. Default is to print all the fields. Fields are also printed in the
same order as they are listed.

no-data-print yes|no
When set as no and field-list is given, suppresses printing of record_header and
record_trailer in case where current record contains none of the fields specified
in field-list.

field-empty-print yes|no
When set as no, nothing is printed for fields which consist entirely of characters
from empty-chars. If none of the fields of a record are printed then the printing
of record_trailer is also suppressed. Default is yes.

empty-chars string
string specifies a set of characters which define an "empty" field. Default is "
\f\n\r\t\v" (space, form-feed, newline, carriage return, horizontal tab and
vertical tab).

output-file file
Output is written to file instead of the default output. If - is given the standard
output is used.

group_header string
If a record has a level and group name defined, string is printed before the first
record in the same group or if the group name has changed in the same level

group_trailer string
If a record has a level and group name defined, string is printed after the records
in lower levels or if the group name has changed in the same level or if a higher
level record is found.

element_header string
If record has a level and header name defined, string is printed before the records
contents.

element_header string
If record has a level and header name defined, string is printed after the records
contents.

hex-caps yes|no
Print hexadecimal numbers in capital letters. Default is no.

Lookup definitions
lookup name {options...}
Defines one lookup table.

Lookup options:
search exact|longest
The search type for lookup table.

default-value value
value is printed if the lookup is not successful.

pair key value
One key/value pair for the lookup table.

file name [separator]
Key/value pairs are read from file name. Every line is considered as a key/value
pair separated by separator. Default separator is semicolon.

Constants
Additional to input fields constants values can be printed using option -f,--field-list or
output option field-list. Constant will be printed using data output option.

Constants are specified as

const name value
when the name appears in a field list, value will be printed for every record as
the name were one of the input fields.

Input Preprocessor
It is possible to define an input preprosessor for ffe. An input preprocessor is simply an
executable program which writes the contents of the input file to standard output which
will be read by ffe. If the input preprosessor does not write any characters on its
standard output, then ffe uses the original file.

To set up an input preprocessor, set the FFEOPEN environment variable to a command line
which will invoke your input preprocessor. This command line should include one occurrence
of the string %s, which will be replaced by the input filename when the input preprocessor
command is invoked.

The input preprocessor is not used if ffe is reading standard input.

EXAMPLES


Example of fixed length flat file containing fields 'FirstName','LastName' and 'Age':

John Ripper 23
Scott Tiger 45
Mary Moore 41

This file can be printed in XML with the following configuration:

structure personnel {
type fixed
output XML
record person {
field FirstName 9
field LastName 13
field Age 2
}
}

output XML {
file_header "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n"
data "<%n>%d</%n>\n"
record_header "<%r>\n"
record_trailer "</%r>\n"
indent " "
}

Use ffe online using onworks.net services


Free Servers & Workstations

Download Windows & Linux apps

  • 1
    DivKit
    DivKit
    DivKit is an open source Server-Driven
    UI (SDUI) framework. It allows you to
    roll out server-sourced updates to
    different app versions. Also, it can be
    used fo...
    Download DivKit
  • 2
    subconverter
    subconverter
    Utility to convert between various
    subscription format. Shadowrocket users
    should use ss, ssr or v2ray as target.
    You can add &remark= to
    Telegram-liked HT...
    Download subconverter
  • 3
    SWASH
    SWASH
    SWASH is a general-purpose numerical
    tool for simulating unsteady,
    non-hydrostatic, free-surface,
    rotational flow and transport phenomena
    in coastal waters as ...
    Download SWASH
  • 4
    VBA-M (Archived - Now on Github)
    VBA-M (Archived - Now on Github)
    Project has moved to
    https://github.com/visualboyadvance-m/visualboyadvance-m
    Features:Cheat creationsave statesmulti
    system, supports gba, gbc, gb, sgb,
    sgb2Tu...
    Download VBA-M (Archived - Now on Github)
  • 5
    Stacer
    Stacer
    Linux System Optimizer and Monitoring
    Github Repository:
    https://github.com/oguzhaninan/Stacer.
    Audience: End Users/Desktop. User
    interface: Qt. Programming La...
    Download Stacer
  • 6
    OrangeFox
    OrangeFox
    Fork of TeamWinRecoveryProject(TWRP)
    with many additional functions, redesign
    and more Features:Supports Treble and
    non-Treble ROMsUp-to-date Oreo kernel,
    built...
    Download OrangeFox
  • More »

Linux commands

  • 1
    aa-clickhook
    aa-clickhook
    aa-clickhook - click system hook for
    AppArmor DESCRIPTION: When a click
    package is installed, click will run
    system and user hooks. The click
    AppArmor system h...
    Run aa-clickhook
  • 2
    aa-clickquery
    aa-clickquery
    aa-clickquery - program for querying
    click-apparmor DESCRIPTION: This program
    is used to query click-apparmor for
    information. USAGE: aa-clickquery
    --click-fra...
    Run aa-clickquery
  • 3
    cqrlog
    cqrlog
    CQRLOG - Advanced logging program for
    hamradio operators DESCRIPTION: CQRLOG
    is an advanced ham radio logger based on
    MySQL database. Provides radio control
    ba...
    Run cqrlog
  • 4
    cramfsswap
    cramfsswap
    cramfsswap - swap endianess of a cram
    filesystem (cramfs) ...
    Run cramfsswap
  • 5
    FvwmEvent
    FvwmEvent
    FvwmEvent - the fvwm event module ...
    Run FvwmEvent
  • 6
    FvwmForm
    FvwmForm
    FvwmForm - input form module for Fvwm ...
    Run FvwmForm
  • More »

Ad