$ cisiviv1.0.1Cisivi
Malý nástroj a knihovna jazyka C pro dotazy do souborů CSV na macOS, Linuxu a Windows. Dotazujte, filtrujte, řaďte a upravujte soubory CSV z příkazové řádky, takže vaše shellové skripty zvládnou čárky a zalomení řádků v uvozovkách bez cut nebo awk.
# Instalace přes npm (nebo Homebrew, Scoop, balíčky).
$ npm install -g @partoska/cisivi# Přečtení jednoho sloupce.
$ cisivi name crew.csvKirkSpockMcCoy, LeonardJaneway# Počet odpovídajících řádků.
$ cisivi -c -f ship=Enterprise . crew.csv3# Změna hodnoty v souboru.
$ cisivi -w -s Admiral -f name=Kirk rank crew.csvProč Cisivi?
Malý a bez závislostí
Jeden nástroj a jedna knihovna v C99, které potřebují jen standardní knihovnu C. Sestavíte je pomocí GCC, Clang nebo MSVC a poběží od Raspberry Pi až po počítač s Windows.
Ptejte se na to, co potřebujete
Vyžádejte si celou tabulku pomocí ., sloupce podle názvu nebo podle pozice pomocí #N, řádky pomocí [ROWS] nebo jednu hodnotu pomocí [0].name. Řádky lze počítat i od konce.
Filtrování a řazení
Pomocí parametru -f ponechte jen potřebné řádky: = pro text, < nebo >= pro čísla, ~ pro hledání uvnitř hodnoty. Seřaďte je pomocí --sort, čísla podle hodnoty.
Skutečné CSV, ne dělení řádků
Čárky v uvozovkách, zdvojené uvozovky i zalomení řádků uvnitř hodnot zůstanou v jednom poli. Počet z parametru -c i názvy sloupců z parametru -k počítají záznamy, ne řádky.
Výstup pro skripty i lidi
Vypište CSV, surové hodnoty po jedné na řádek, JSON pomocí parametru -j nebo zarovnanou tabulku pomocí parametru -t. Parametr -0 ukončuje hodnoty znakem NUL pro xargs -0.
Libovolný oddělovač
Pomocí parametru -F čtěte středníky, tabulátory nebo jakýkoli jiný znak a pomocí --output-delimiter zapisujte jiný. LF nebo CRLF, s řádkem záhlaví i bez něj.
Spojování více souborů
Zadejte více souborů a Cisivi je spojí v daném pořadí a sloupce spáruje podle názvu. Sloupec, který přibude v pozdějším souboru, se přidá a řádky bez něj ho nechají prázdný.
Nastavení, přidávání a mazání
Hodnoty nastavíte pomocí parametru -s, řádky přidáte nebo vložíte pomocí parametru -a a řádky nebo sloupce smažete pomocí parametru -d. Výsledek vypište, nebo ho pomocí parametru -w zapište zpět do souboru.
Návratové kódy pro skripty
0 nalezeno, 1 nenalezeno, 2 chyba použití nebo vstupu. Výstup ve formátu CSV zůstává platným CSV, připraveným pro další cisivi.
Připraveno pro AI agenty
Cisivi obsahuje skill pro AI agenty. Nainstalujete ho jedním příkazem a AI agenti pro programování, jako jsou Claude Code a Codex, pak umí dotazovat a upravovat vaše soubory CSV přesnými příkazy.
$ npx skills add partoska/cisiviJeden nástroj, jedna knihovna
Příkaz cisivi je tenká vrstva nad knihovnou libcisivi. Příkaz použijte ve shellových skriptech a rourách, nebo knihovnu přilinkujte do vlastního programu v C.
Nástroj příkazové řádky
Čte soubory nebo standardní vstup, vypíše přesně to, co dotaz vybere, a upravuje hodnoty, řádky a sloupce. Je určený pro shellové skripty, Makefiles a CI úlohy.
$ cisivi -f ship=Voyager name crew.csvKnihovna C
Čte a zapisuje CSV s volitelným záhlavím a libovolným oddělovačem, bez převodu typů. Zachovává pořadí řádků a sloupců ze souboru a sama nic nevypisuje: chyby ukládá do dokumentu i s číslem řádku.
#include <cisivi.h>Rychlý start
Od instalace k dotazům a změně souboru CSV v pěti krocích.
Nainstalujte cisivi
Nainstalujte CLI a ověřte verzi. Dáváte přednost Homebrew, Scoop nebo nativnímu balíčku? Podívejte se na možnosti instalace.
$ npm install -g @partoska/cisivi$ cisivi -VVytvořte soubor CSV
Zapište malou tabulku, na které dotazy vyzkoušíte. Její první řádek pojmenovává sloupce. Poslouží i jakýkoli existující soubor
.csvs řádkem záhlaví.$ printf 'name,rank,age\nKirk,Captain,34\n"McCoy, Leonard",Doctor,52\nJaneway,Captain,41\n' > crew.csvPřečtěte sloupec
Vypište hodnoty jednoho sloupce a pak celou tabulku jako zarovnanou tabulku. Čárka v uvozovkách zůstane ve své hodnotě.
$ cisivi name crew.csv$ cisivi -t . crew.csvFiltrujte a řaďte
Ponechte řádky, pro které platí všechny filtry, nebo řádky seřaďte a vezměte první.
$ cisivi -f rank=Captain -f 'age>40' name crew.csv$ cisivi --sort-desc age '[0].name' crew.csvZměňte hodnotu
Nastavte hodnotu v odpovídajících řádcích, pomocí parametru
-wji zapište zpět do souboru a pak ji přečtěte znovu.$ cisivi -w -s Admiral -f name=Kirk rank crew.csv$ cisivi -f name=Kirk rank crew.csv
Příklady
Vypište celou tabulku, sloupce podle názvu nebo pozice, řádky podle pozice nebo jednotlivé hodnoty. Záporné pozice se počítají od konce a [N:M] vezme řádky od N až před M. Pomocí parametru -i můžete u názvů sloupců ignorovat velikost písmen.
id,name,rank,age,ship1,Kirk,Captain,34,Enterprise2,Spock,Commander,35,Enterprise3,"McCoy, Leonard",Doctor,52,Enterprise4,Janeway,Captain,41,Voyager$ cisivi . crew.csv$ cisivi name crew.csv$ cisivi name,ship crew.csv$ cisivi '#1' crew.csv$ cisivi '[-1].name' crew.csv$ cisivi '[1:3].name,ship' crew.csv$ cat crew.csv | cisivi -i NAMEDalší možnosti najdete v dokumentaci.
Instalace
Vyberte způsob, který vyhovuje vašemu systému. Každá možnost nainstaluje stejný nástroj cisivi.
$ brew install partoska/tap/cisiviPro macOS a Linux na x64 a ARM64.
Příkazy používají nejnovější verzi 1.0.1. Všechny soubory a kontrolní součty SHA256 najdete na stránce vydání.
Přidejte skill pro AI agenty
Nechte AI agenty pro programování, jako jsou Claude Code a Codex, ovládat cisivi za vás. Instalátor přidá skill Cisivi do adresáře se skilly vašeho agenta. V Claude můžete také nahrát soubor cisivi_1.0.1_skill.zip ze stránky vydání jako vlastní skill. Nejdřív nainstalujte samotné cisivi.
$ npx skills add partoska/cisiviPřehled
Spusťte cisivi [OPTIONS] [QUERY] [FILE...]. Přečte každý FILE v daném pořadí, nebo standardní vstup, pokud žádný soubor nezadáte nebo je soubor -. Dotaz je vždy první. Vestavěnou nápovědu zobrazíte příkazem cisivi -h.
Dotazy
- .
- Celá tabulka jako CSV (výchozí).
- COLUMN
- Hodnoty jednoho sloupce, jedna na řádek.
- COLUMN,...
- Více sloupců jako CSV.
- #N
- Sloupec podle pozice, počítané od 0.
- "NAME"
- Název sloupce v uvozovkách, který může obsahovat čárky nebo uvozovky. V uvozovkách se escapují
\"a\\. - [ROWS]
- Řádky podle pozice jako CSV:
[N],[-N]od konce,[N:M]odNaž předM,[N:],[:M]nebo[*]. - [ROWS].COLUMN
- Řádky a sloupce zároveň, například
[0].namepro jednu hodnotu.
Operátory filtrů
- =, !=
- Rovná se, nebo nerovná, jako přesný text.
- <, <=, >, >=
- Uspořádání: čísla podle hodnoty, ostatní text bajt po bajtu.
- ~, !~
- Obsahuje hodnotu, nebo neobsahuje.
Návratové kódy
- 0
- Nalezeno, nebo se úprava povedla.
- 1
- Nenalezeno: chybějící sloupec nebo žádný vybraný řádek. Záhlaví se přesto vypíše, takže výstup zůstává platným CSV.
- 2
- Chyba použití nebo vstupu, včetně syntaktických chyb CSV s číslem řádku na standardním chybovém výstupu.
Parametry
- -f, --filter EXPR
- Ponechá řádky, pro které platí
COLUMN OPERATOR VALUE. Při opakování musí platit všechny. - --sort COLUMN
- Seřadí řádky podle
COLUMN, čísla podle hodnoty. - --sort-desc COLUMN
- Totéž v sestupném pořadí.
- -k, --keys
- Vypíše názvy sloupců, jeden na řádek.
- -c, --count
- Vypíše počet vybraných řádků.
- -s, --set VALUE
- Nastaví sloupec z dotazu na zadanou hodnotu ve vybraných řádcích. Chybějící sloupec přidá.
- -a, --add ROW
- Připojí jeden záznam zadaný jako text CSV, nebo ho s
[N]vloží jako řádekN. - -d, --delete
- Smaže vybrané řádky, nebo sloupce uvedené v dotazu.
- -w, --write
- Zapíše úpravu zpět do
FILEmísto jejího vypsání. Vyžaduje právě jeden soubor. - -j, --json
- Vypíše JSON: pole s objektem pro každý řádek.
- -t, --table
- Vypíše zarovnanou tabulku ke čtení.
- -0, --null
- Ukončí surové hodnoty a názvy znakem NUL místo nového řádku.
- -F, --delimiter C
- Čte pole oddělená znakem
C, například;nebotab. - --output-delimiter C
- Zapisuje pole oddělená znakem
C. Ve výchozím stavu stejným, jaký četl. - --crlf
- Ukončí zapsané řádky znaky CRLF místo LF.
- -n, --no-header
- Čte první řádek jako data. Sloupce se pak určují jako
#N. - -i, --ignore-case
- Porovnává názvy sloupců bez ohledu na velikost písmen (ASCII).
- -h, --help
- Zobrazí nápovědu.
- -V, --version
- Zobrazí verzi.
Knihovna
- csInit, csDestroy
- Vytvoří a uvolní dokument. Příznak
CS_FHEADERudělá z prvního řádku záhlaví,CS_FICASEzapne porovnávání názvů bez ohledu na velikost písmen aCS_FLFpřevede zalomení řádků uvnitř hodnot na LF. - csLoad, csSave
- Načte dokument ze souboru, nebo ho do souboru uloží.
- csRead, csWrite
- Načte nebo zapíše text přes vaše vlastní callbacky: standardní vstup, socket nebo paměť.
- csParse
- Zpracuje text CSV z řetězce.
- csGet, csSet
- Přečte nebo nahradí hodnotu pole podle řádku a sloupce. Se záhlavím obsahuje řádek 0 názvy sloupců.
- csRowAdd, csRowInsert
- Připojí řádek, nebo ho vloží na zadanou pozici. Řádky odeberou
csRowRemoveacsRowRemoveMany. - csRowCount, csRowAt
- Spočítá řádky včetně záhlaví a prochází je v pořadí dokumentu.
- csColumnFind, csColumnName
- Najde sloupec podle názvu, nebo vrátí jeho název.
csColumnCountje spočítá. - csColumnAdd, csColumnInsert
- Přidá sloupec vyplněný hodnotou, nebo ho vloží na zadanou pozici.
csColumnRemovesloupec odebere. - csSetDelimiter, csSetNewline
- Zvolí oddělovač polí pro čtení i zápis a to, čím končí zapsané řádky.
- csWriteRow
- Zapíše jediný záznam s nastavením dokumentu, pro řádky vznikající postupně.
- csError
- Vrátí poslední chybu se stavem, číslem řádku a zprávou.
Celé API najdete v souboru cisivi.h. Vložte cisivi.h a linkujte pomocí pkg-config --cflags --libs cisivi.
Použití
Skripty a provoz
- →Čtěte sloupce a hodnoty z exportů CSV ve shellových skriptech a CI úlohách, kde
cutaawkselhávají na čárkách v uvozovkách. - →Filtrujte, řaďte a počítejte řádky reportů a pak je vypište jako JSON pro další nástroje nebo jako tabulku pro lidi.
- →Spojte měsíční exporty do jednoho souboru, převeďte exporty z tabulkových procesorů oddělené středníky, nebo aktualizujte jednu hodnotu přímo v souboru.
Vývoj
- →Přidejte čtení a zápis CSV do programu v C nebo C++ s jednou malou knihovnou bez závislostí.
- →Čtěte CSV z paměti, socketu nebo standardního vstupu přes callbacky pro streamy a zapisujte řádky postupně.
- →Nechte AI asistenta pro programování dotazovat a upravovat soubory CSV přesnými příkazy místo úprav textu.
Technické specifikace
Přestaňte dělit CSV podle čárek.
Nainstalujte Cisivi jedním příkazem a svůj první dotaz do souboru CSV spustíte během pár sekund.
Prohlédněte si zdrojový kód na GitHubu, stáhněte balíček z npm, přečtěte si dokumentaci nebo přidejte skill pro AI agenty.