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 / 408136
Accepted
Dipankar
Dipankar
Asked: 2017-12-02 00:17:37 +0800 CST2017-12-02 00:17:37 +0800 CST 2017-12-02 00:17:37 +0800 CST

Com a ajuda do número da linha, substitua uma linha inteira por outra linha que contenha o caminho do arquivo

  • 772

Como faço para substituir Old_String por New_String em um arquivo?

Old_String:

$resultado = $client->updateInventory("UpdateInventory.xml");
New_String:
$resultado = $client->updateInventory("/Desktop/new/UpdateInventory.xml");

Old_String no número da linha = 5 em um arquivo chamado file1.txt

O que eu tentei:

sed '5s/.*/'$result = $client->updateInventory("/Desktop/new/UpdateInventory.xml");'/' file1.txt
awk text-processing
  • 4 4 respostas
  • 603 Views

4 respostas

  • Voted
  1. Best Answer
    Praveen Kumar BS
    2017-12-02T01:11:30+08:002017-12-02T01:11:30+08:00

    Você pode usar o comando abaixo para obter o mesmo

    sed "5s:.*:'$'result = '$'client->updateInventory('/Desktop/new/UpdateInventory.xml');:g" filename | sed "s:'$':$:g" | tr "'" '"'
    
    • 2
  2. Philippos
    2017-12-02T00:54:11+08:002017-12-02T00:54:11+08:00

    Remova as aspas simples internas. Eles terminam os externos, então $resultserão expandidos e sedprovavelmente reclamarão de um scomando inacabado.

    Em vez disso, use um delimitador diferente para o scomando, você pode usar quase qualquer coisa em vez da barra. Então

    sed '5s_.*_$result = $client->updateInventory("/Desktop/new/UpdateInventory.xml")‌​;_' file1.txt
    

    é o que você quer.

    • 0
  3. Sundeep
    2017-12-02T01:11:03+08:002017-12-02T01:11:03+08:00

    Outra maneira é usar co comando que limpa a(s) linha(s) especificada(s) pelo endereço

    $ seq 5 | sed '2c\
    foobar'
    1
    foobar
    3
    4
    5
    
    $ # with GNU-sed, assuming \ is not first character
    $ seq 5 | sed '2cfoobar'
    

    Ambos os comandos se cterão problemas se a string de substituição tiver certos caracteres especiais, por exemplo:

    $ seq 3 | sed '2s/.*/abc&xyz/'
    1
    abc2xyz
    3
    $ seq 3 | sed '2cabc\tabc'
    1
    abc     abc
    3
    

    Uma maneira robusta de lidar com isso é usar o rcomando

    $ echo 'foo&\t\n\1///\\xyz' > f1
    $ seq 3 | sed -e '2rf1' -e '2d'
    1
    foo&\t\n\1///\\xyz
    3
    
    • 0
  4. Praveen Kumar BS
    2017-12-02T01:39:22+08:002017-12-02T01:39:22+08:00

    Usando o comando awk também podemos alcançar o resultado


    awk  ‘NR==5 {gsub(".*","$result = $client->updateInventory(/Desktop/new/UpdateInventory.xml);",$0);print $0}' filename| sed 's/(/&"/g' | sed 's/)/"&/g'
    

    • 0

relate perguntas

  • 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

    Matriz JSON para bash variáveis ​​usando jq

    • 4 respostas
  • Marko Smith

    A data pode formatar a hora atual para o fuso horário GMT? [duplicado]

    • 2 respostas
  • Marko Smith

    bash + lê variáveis ​​e valores do arquivo pelo script bash

    • 4 respostas
  • Marko Smith

    Como posso copiar um diretório e renomeá-lo no mesmo comando?

    • 4 respostas
  • Marko Smith

    conexão ssh. Conexão X11 rejeitada devido a autenticação incorreta

    • 3 respostas
  • Marko Smith

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

    • 7 respostas
  • Marko Smith

    comando systemctl não funciona no RHEL 6

    • 3 respostas
  • Marko Smith

    rsync porta 22 e 873 uso

    • 2 respostas
  • Marko Smith

    snap /dev/loop em 100% de utilização -- sem espaço livre

    • 1 respostas
  • Marko Smith

    chave de impressão jq e valor para todos no subobjeto

    • 2 respostas
  • Martin Hope
    EHerman Matriz JSON para bash variáveis ​​usando jq 2017-12-31 14:50:58 +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
    Drux A data pode formatar a hora atual para o fuso horário GMT? [duplicado] 2017-12-26 11:35:07 +0800 CST
  • Martin Hope
    AllisonC Como posso copiar um diretório e renomeá-lo no mesmo comando? 2017-12-22 05:28:06 +0800 CST
  • Martin Hope
    Steve Como as permissões de arquivo funcionam para o usuário "root"? 2017-12-22 02:46:01 +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
  • Martin Hope
    Cbhihe Altere o editor padrão para vim para _ sudo systemctl edit [unit-file] _ 2017-12-03 10:11:38 +0800 CST
  • Martin Hope
    showkey Como baixar o pacote não instalá-lo com o comando apt-get? 2017-12-03 02:15:02 +0800 CST
  • Martin Hope
    youxiao Por que os diretórios /home, /usr, /var, etc. têm o mesmo número de inode (2)? 2017-12-02 05:33:41 +0800 CST
  • Martin Hope
    user223600 gpg — o comando list-keys gera uid [ desconhecido ] depois de importar a chave privada para uma instalação limpa 2017-11-26 18:26:02 +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