AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-1925

Caleb's questions

Martin Hope
Caleb
Asked: 2022-03-18 09:56:12 +0800 CST

Por que os sinalizadores de expansão do parâmetro ZSH não funcionam com aqui-strings?

  • 4

O usinalizador de expansão de parâmetro deve gerar apenas valores de matriz exclusivos. E isso acontece... às vezes.

$ stuff=(a b a c)
$ echo ${(u)stuff}
a b c
$ cat <<< ${(u)stuff}
a b a c

O que da?

zsh
  • 1 respostas
  • 283 Views
Martin Hope
Caleb
Asked: 2019-06-27 02:41:30 +0800 CST

Reordenar linhas e mesclar outras com base em critérios específicos

  • 2

Um ponto fraco no meu cli foo é awk. Eu provavelmente poderia resolver o seguinte com scripts elaborados, mas tenho certeza de que awké a melhor ferramenta para o trabalho e, pela minha vida, não consigo descobrir a abordagem correta.

Digamos que eu tenha um arquivo de dados como este (Ledger):

2019/05/31 (MMEX948) Gürmar
    Assets:Cash:Marina                       ₺-28,14
    Expenses:Food:Groceries:Meat              ₺28,14
    Assets:Cash:Marina                       ₺-28,14
    Expenses:Food:Groceries:Meat              ₺28,14
    Assets:Cash:Marina                        ₺-3,45
    Expenses:Food:Groceries:Basic              ₺3,45
    Assets:Cash:Marina                       ₺-15,00
    Expenses:Food:Groceries:Produce           ₺15,00

2019/06/01 (MMEX932) A101
    Assets:Cash:Caleb                     $-3.00
    Assets:Cash:Marina                    $-2.50
    Expenses:Food:Groceries:Basic          $5.50

2019/06/01 (MMEX931) Şemikler Pazar Yeri
    Assets:Cash:Marina                       ₺-24,00
    Expenses:Food:Groceries:Basic             ₺24,00
    Assets:Cash:Marina                       ₺-31,00
    Expenses:Food:Groceries:Meat              ₺31,00
    Assets:Cash:Marina                       ₺-65,00
    Expenses:Food:Groceries:Produce           ₺65,00

Cada parágrafo separado por linha em branco é uma transação , cada linha recuada é um lançamento , cada lançamento tem uma conta e um valor (separado por pelo menos 2 espaços).

Eu quero que duas coisas aconteçam com esses dados. Eu não me importo se isso acontecer no mesmo comando ou não, pode ser mais fácil fazer em uma ou duas passagens, dependendo da ferramenta ...

  1. Todos os lançamentos com valores negativos devem ser organizados após os lançamentos com valores positivos.

  2. Quaisquer lançamentos com valores negativos e contas duplicadas devem ser mesclados. Idealmente, os valores seriam somados, mas isso é muito complicado por causa dos formatos de moeda e não é necessário porque posso regenerar as linhas de valor. A remoção total do valor das postagens mescladas é suficiente, desde que não mais de uma conta única seja mesclada por passagem.

O resultado deve ficar assim:

2019/05/31 (MMEX948) Gürmar
    Expenses:Food:Groceries:Meat              ₺28,14
    Expenses:Food:Groceries:Meat              ₺28,14
    Expenses:Food:Groceries:Basic              ₺3,45
    Expenses:Food:Groceries:Produce           ₺15,00
    Assets:Cash:Marina

2019/06/01 (MMEX932) A101
    Expenses:Food:Groceries:Basic          $5.50
    Assets:Cash:Marina                    $-2.50
    Assets:Cash:Caleb

2019/06/01 (MMEX931) Şemikler Pazar Yeri
    Expenses:Food:Groceries:Basic             ₺24,00
    Expenses:Food:Groceries:Meat              ₺31,00
    Expenses:Food:Groceries:Produce           ₺65,00
    Assets:Cash:Marina

Observações que tornam isso um pouco mais complicado do que apenas uma verificação de duplicatas:

  • Na primeira transação, há duas contas diferentes que são duplicadas. Apenas um deles deve ser mesclado e limpo (seria possível mesclar os dois, mas apenas um por passagem ou não poderei corrigir os valores).
  • Na transação intermediária não há nada para mesclar, mas seria um erro limpar cegamente os valores de todas as transações negativas. Como não há mesclagem, ela não precisa ser limpa, mas pode ser se isso facilitar o processamento.

Como eu passaria por esse problema em awk? Ou se Awk não é a melhor solução, qual é? Na maioria das linguagens de script (perl, python, zsh), eu analisaria tudo, jogaria tudo em uma matriz multidimensional, classificaria com base em correspondências regex do valor e secundariamente em alfa para as contas, então iteraria sobre ele para produzi-lo, sempre elimine a última quantia e mescle apenas a última duplicata (se houver).

Observe que eu trabalhei em uma maneira de analisar e mesclar transações duplicadas no Awk outro dia:

awk 'NF { if (/^20/) { if (last != $$0) print "\n" $$0; last = $$0 } else { print $$0 } }' |

Mas uma lógica awk mais complicada está me desafiando agora.

awk text-processing
  • 2 respostas
  • 102 Views
Martin Hope
Caleb
Asked: 2019-01-17 06:17:57 +0800 CST

Como limitar um serviço systemd para "jogar bem" com a CPU?

  • 26

Eu tenho um serviço systemd (um executor de CI) que tende a atolar o sistema com trabalhos muito intensivos da CPU. Eu peguei a média de carga voando acima de 100 agora e quero acabar com essa bobagem.

Nada mais no sistema é limitado de forma alguma, então o negócio é que eu quero que todo o resto continue como seria executado agora, mas também:

  • (a) todos os processos executados como o usuário único que os jobs de CI executam ou
  • (b) qualquer processo filho instanciado pelo daemon de serviço systemd

... para ficar em segundo plano em relação a todo o resto do sistema. Na verdade, eu gostaria que eles tivessem algo como um limite absoluto de 90%, mesmo quando nada mais no sistema precisa dos 10% restantes dos ciclos de CPU, mas se qualquer outra coisa solicitar tempo de CPU, eu gostaria que eles obtivessem tanto quanto eles querem primeiro.

Qual é a melhor maneira de configurar isso? Estou executando o Arch Linux no EC2 e tenho cgroups disponíveis (incluindo cgmanager), mas nunca os usei.

systemd services
  • 1 respostas
  • 15664 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve