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 / unix / Perguntas / 776765
Accepted
elbarna
elbarna
Asked: 2024-05-19 22:58:52 +0800 CST2024-05-19 22:58:52 +0800 CST 2024-05-19 22:58:52 +0800 CST

Como tornar o sed “silencioso” em um script vim?

  • 772

Este script vim faz seu trabalho

#!/usr/bin/vim
%!sed 's/ .*//'
%!sort -fu
norm dd
% norm $D

O único problema é esta mensagem no final (tenho que pressionar ENTER no teclado)

"20 lines filtered
20 lines filtered
Press ENTER or type command to continue
"

Como simular ENTER no script? Para evitar pressionar manualmente coloquei isso no final do script mas não funciona

norm <^M>

A verificação do problema é sed (que produz a saída), não vim. Como deixar o sed mais silencioso? Usar "sed -n" produz uma saída vazia.

Tentei com um texto com essas linhas

https://pastebin.com/DU9Rx0SZ

vim
  • 1 1 respostas
  • 57 Views

1 respostas

  • Voted
  1. Best Answer
    Vilinkameni
    2024-05-21T22:28:43+08:002024-05-21T22:28:43+08:00

    Resposta literal

    Use o vim :silentou :silent!para prefixar comandos individuais cujas mensagens não devem ser emitidas, por exemplo:

    :silent! %!sort -fu
    

    Para saber a diferença entre :silente :silent!, consulte silencioso vs. silencioso! - Qual é a diferença?

    Uma abordagem diferente (correta)

    Dependendo se as ações do seu script estão relacionadas aos arquivos que você abre no Vim, é melhor usar os próprios comandos :sorte comandos do Vim :s, evitando comandos externos desnecessários, ou criar um script de shell (ou um alias de shell, ou uma função de shell) de outra forma.

    Usando a função Vim

    O seguinte script, sort.vim :

    " sort.vim
    function Sortit()
      %s/ .*//
      sort iu
      normal dd
      %normal $D
    endfunction
    
    nmap <silent> \s :silent! call Sortit()<CR>
    

    pode ser originado com :source sort.vime a função Sortitpode ser chamada com :silent! call Sortit()ou pressionando \s. Alternativamente, a função pode ser adicionada a $HOME/.vimrc , eliminando a necessidade de obter o script manualmente.

    Usando a função shell

    O seguinte arquivo sortit.sh contém a função shell sortit:

    # sortit.sh
    sortit()
    {
        sed 's/ .*//' |
            sort -fu |
            sed '1d;s/.$//'
    }
    

    e pode ser originado, após o qual essa função pode ser chamada no shell:

    $ . ./sortit.sh      # assuming sortit.sh is in current directory
    $ cat test.sort
    Zed foo  bar
    a line
    more  test text
    Blur
    $ sortit < test.sort
    Blu
    mor
    Ze
    

    assim como acontece com o script Vim, esta função pode ser adicionada ao $HOME/.profile do usuário ou a um arquivo semelhante, evitando a necessidade de originar o script.

    Editar: usando o texto de exemplo da pasta vinculada na pergunta:

    $ cat test2.sort
    dkms-3.0.11-x86_64-1_SBo
      Repo version:  dkms-3.0.12-x86_64-1_SBo
    graphviz:
      POTENTIAL UPDATE
      Installed version:  graphviz-9.0.0-x86_64-1_SBo
      Repo version:  graphviz-11.0.0-x86_64-1_SBo
    $ sortit < test2.sort
    dkms-3.0.11-x86_64-1_SB
    graphviz
    $
    

    Claro, se você passar -npara sed(1) na função shell sortit, ele não produzirá saída a menos que o pcomando explícito seja fornecido, mas neste exemplo não faz sentido. Só não use essa opção, mas os comandos literais desta resposta?

    • 1

relate perguntas

  • Centos7 - instalação mínima: echo $TERM me dá 'linux' e 'tput colors' dá '8'. Como mudar isso?

  • Como se livrar dos avisos "nano não encontrado" sem instalar o nano?

  • Excluir até o final da linha de comando no Vim

  • Como ignorar diretórios usando: e no vim?

  • Altere o editor padrão para vim para _ sudo systemctl edit [unit-file] _

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