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 / 479835
Accepted
AbstProcDo
AbstProcDo
Asked: 2018-11-05 22:57:43 +0800 CST2018-11-05 22:57:43 +0800 CST 2018-11-05 22:57:43 +0800 CST

Substitua o ``` de abertura de pares ``` duplos por ```bash

  • 772

Eu tenho um arquivo markdown que contém blocos de código como

Em [310]: !cat data.md

**File Permission Related Commands**

These commands are used to change permissions of the files

```
72. chmod octal file-name                : Changes the permissions of file to octal
    chmod 777 /data/test.c                   : Sets rwx permission for owner , group and others
```

**Network Related Commands**

These commands are used to view and edit network configurations related aspects of the system

```
75. ifconfig -a        : Displays all network interface and set ip address
76. ifconfig eth0      : Displays eth0 ethernet port ip address and details
```

**Compression / Archive Related Commands**

These commands are used to compress and decompress files

```
89. tar cf home.tar  home         : Creates a tar named home.tar containing home/
    tar xf file.tar               : Extracts the files from file.tar
    tar czf  file.tar.gz  files   : Creates a tar with gzip compression

Eu gostaria de substituir a abertura ```(tripla cavet) ```bashpara marcar o shell script que será demonstrado em cores pelo editor.

Eu tentei a resposta.

In [327]: !sed 's/^(```)/(```bash)/g' data.md                                                                     
**File Permission Related Commands**

These commands are used to change permissions of the files

```
72. chmod octal file-name                : Changes the permissions of file to octal
    chmod 777 /data/test.c                   : Sets rwx permission for owner , group and others

mas a abertura ```não é substituída.

Como eu poderia realizar tal tarefa?

text-processing
  • 4 4 respostas
  • 92 Views

4 respostas

  • Voted
  1. Stéphane Chazelas
    2018-11-06T01:12:50+08:002018-11-06T01:12:50+08:00

    Para substituir todas as outras ```linhas por ```bash, provavelmente é mais fácil com awk:

    awk '$0 == "```" && alt = 1 - alt {$0 = "```bash"}; {print}' < file
    

    Para substituir todas as ``` linhas, isso seria:

    sed 's/^```$/&bash/'
    

    Não há necessidade de capturar explicitamente a correspondência (que, por sinal, é feito com \(...\); (...)só funcionaria depois de habilitar expressões regulares estendidas, conforme suportado por algumas sedimplementações com -Eou -r) quando é a correspondência inteira, pois a correspondência inteira é capturada de &qualquer maneira.

    Não há necessidade de uma gbandeira. O gsinalizador é para substituir todas as ocorrências na linha , mas aqui pode haver apenas uma ocorrência por linha, pois estamos ancorando o padrão no início e no final da linha com ^e $.

    Com sed, para substituir todas as outras linhas, você poderia fazer:

    sed '
      /^```$/ {
        s//&bash/;:1
        n;//!b1
      }'
    

    Em uma linha:

    sed -e '/^```$/ {s//&bash/;:1' -e 'n;//!b1' -e '}'
    

    Com a implementação GNU de sed, você pode encurtá-lo para:

    sed '/^```$/{s//&bash/;:1;n;//!b1}'
    

    (mas essa não é uma sedsintaxe padrão como POSIXly, você não pode ter nenhum código após os comandos :ou be precisa haver um ;ou nova linha antes }de ).

    • 4
  2. Best Answer
    fra-san
    2018-11-06T00:11:33+08:002018-11-06T00:11:33+08:00

    EDITADO

    O comando sed 's/^(```)/(```bash)/g'não funciona porque os colchetes são interpretados literalmente.
    Você provavelmente tem que escapar dos colchetes como em

    $ sed 's/^\(```\)/```bash/g'
    

    Como alternativa, você pode habilitar expressões regulares estendidas:

    $ sed -E  's/^(```)/```bash/g'
    

    para que os colchetes não precisem ser escapados.

    Ou, apenas remova os colchetes:

    $ echo '```' | sed 's/^```/```bash/g'
    ```bash
    

    Para corresponder apenas à abertura ```, você pode usar um regexp como este:

    $ sed --null-data -E 's/[`]{3,3}([^`]*)([`]{3,3}){0,1}/```bash\1\2/g'
    

    Advertência : Falha se um ` (backtick) for encontrado entre sequências de backticks triplos.

    Ele usa --null-datapara deixar sedtratar a entrada como uma única linha (na verdade, linhas separadas por caracteres nulos) e então procura por sequências de ```-text-``` para substituí-las por ```bash-text-```.

    • 2
  3. Henrik supports the community
    2018-11-06T00:04:45+08:002018-11-06T00:04:45+08:00

    eu tentaria algo como

     perl -ple 'if (m/^```$/) { if (--$|) { s/$/bash/ } }' data.md
    
    • 1
  4. Romeo Ninov
    2018-11-05T23:18:52+08:002018-11-05T23:18:52+08:00

    Você pode tentar usar aspas simples para o sedcomando:

    sed 's/^(```)/(```bash)/g'
    

    Isso é usado para evitar a interpretação dos símbolos do bash

    Mas com base no seu arquivo é melhor você usar algo como:

    sed 's/^```/```bash/g'
    
    • 0

relate perguntas

  • Grep para um conjunto de linhas de $START a $END AND que contém uma correspondência em $MIDDLE

  • Reorganize as letras e compare duas palavras

  • Subtraindo a mesma coluna entre duas linhas no awk

  • Embaralhamento de arquivo de várias linhas

  • como posso alterar o caso do caractere (de baixo para cima e vice-versa)? ao mesmo tempo [duplicado]

Sidebar

Stats

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

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

    • 4 respostas
  • Marko Smith

    ssh Não é possível negociar: "nenhuma cifra correspondente encontrada", está rejeitando o cbc

    • 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

    Como descarregar o módulo do kernel 'nvidia-drm'?

    • 13 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
    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
    Wong Jia Hau ssh-add retorna com: "Erro ao conectar ao agente: nenhum arquivo ou diretório" 2018-08-24 23:28:13 +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
  • Martin Hope
    Bagas Sanjaya Por que o Linux usa LF como caractere de nova linha? 2017-12-20 05:48:21 +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