Etman (Easy Text Manipulator)

ОписаниС

Etman β€” это простая ΠΈ удобная Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° awk ΠΈ sed, прСдназначСнная для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с тСкстом. Она ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ асинхронной ΠΏΡ€ΠΈΡ€ΠΎΠ΄ΠΎΠΉ ΠΈ прСдоставляСт Π±ΠΎΠ³Π°Ρ‚Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ инструмСнтов для рСдактирования тСкста ΠΈ извлСчСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Etman ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ созданиС парсСров для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ JSON, CSV, XML ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ возмоТности

  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… (JSON, CSV, XML, YAML ΠΈ Π΄Ρ€.).
  • Асинхронная ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ².
  • Π‘ΠΎΠ³Π°Ρ‚Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄ для рСдактирования тСкста.
  • Гибкая систСма Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ ΠΈ трансформации Π΄Π°Π½Π½Ρ‹Ρ….
  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ΠΎΠ² (pipelines).
  • Π£Π΄ΠΎΠ±Π½Ρ‹ΠΉ синтаксис для парсинга Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρƒ нас Π΅ΡΡ‚ΡŒ JSON-Ρ„Π°ΠΉΠ» Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 100 ΠœΠ‘ с сообщСниями ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ ΠΈΠΌΠ΅Π½Π° всСх ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚Π΅Π»Π΅ΠΉ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ структуры JSON:

{
  "messages": [
    {
      "sender": "sender",
      "text": "text"
    },
    {
      "sender": "sender 2",
      "text": "text"
    }
  ]
}

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Etman ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ эту Π·Π°Π΄Π°Ρ‡Ρƒ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:

cat messages.json | etman -e "json | query 'messages | [_] | sender' | unique"

Π Π°Π·Π±ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

  • json β€” парсинг Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠ°ΠΊ JSON.
  • query 'messages | [_] | sender' β€” ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ всСх Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ sender ΠΈΠ· массива messages.
  • unique β€” ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

Π—Π°ΠΌΠ΅Π½Π° всСх Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ слова β€œfoo” Π½Π° β€œbar” Π² тСкстовом Ρ„Π°ΠΉΠ»Π΅

cat file.txt | etman -e "replace 'foo' 'bar'" > file.txt

ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ количСства строк Π² Ρ„Π°ΠΉΠ»Π΅

cat file.txt | etman -e "lines | count"