CSVfox
Get the job done.
 English

Shell Specific Behavior

How to cope with various shell restrictions

Generally: quote commands with blank spaces or special characters

On every shell a white space usually separates one command line argument from the previous and the next one.
Other characters might be used for certain shell-specific functions.
If such characters or blank spaces occur, it is always necessary to quote the command or at least the expression embedding it, to prevent "misunderstandings".

Windows Batch files: the code page problem


Here is what can be done if umlauts are necessary when calling csvfox.

The following Windows batch file (something.bat) is in ANSI format (here: Windows-1252).
It needs the Euro (€) sign, but the standard code page 850 does not support this character.

So the batch file temporarily switches to codepage 1252, and defines the variable "euro" (later on referred as "%euro%"), before it switches back to code page 850.

After this, it calls csvfox with command parameters, and on every place where "€" would be needed, it uses "%euro%" instead.

@echo off &setlocal
chcp 1252>nul
set "euro=€"
chcp 850>nul
csvfox kfz.csv +rename[Price],[Brand]=NetPrice,CarType %[Tax]=1.19 +add[GrossPrice]=(([NetPrice])*[Tax]) +add[Phrase]="My new [CarType] costs {([GrossPrice])2} %euro%!" +add[Expensive]={(([NetPrice])*1)2} car-done.csv %log=log-%%Y.txt

A different way to handle this might be using the %job, %j option.

A parameter file has the local Windows default encoding (e.g. CP1252 = Windows-1252). So if you place the commands there, you overcome the restrictions of the CP850 commandline processor and can also use the locally supported diacritical characters directly.

Additionally, a parameter file can have an explicit encoding:

%job/utf-8=myparameters.txt

so if you work with UTF-8 is is also possible to embed any code point of unicode charset.

Linux bash: avoid expansion

In some requirements, special characters, like brackets, must be escaped through prepending a backslash "\". This is e.g. required for accessing column names that contain brackets themself. See also here: CSV Field Access
But Linux bash consumes the backslash for itself (for its own escaping needs) and removes it from the command.
There two different ways to handle this:

  • Enclose the concerned command with double quotes.
  • Complement each backslash with a second backslash, ie. double the backslash.


Moreover, Linux shell immediately expands wildcards like * and ? as placeholders for file names, instead of forwarding these signs to the called program.

You can suppress this expansion with the setting "-f". Or set +H.

This can be done this way:

set -f csvfox input.csv (more commands) set +f
or
 

set +H
csvfox input.csv (more commands)
set -H

Powershell: avoid special characters handling

Use "--%" as the first parameter for csvfox, if using powershell.
This will stop handling #, % etc. as special functions, and allow  the shell to interpret them as characters.
If used often, it might be a good idea to prepare a csvfox command script that always inserts the "--%" parameter as a first argument.

cmd /c 'csvfox ...'  is an alternative to --%
Please pay attention to the single quotes which must surround the whole command line!

überprüfen!
@ as first char in at parameter wird leider immer noch vergessen.



 

Under construction, coming soon