junta-se à saída sed

2

Estou procurando passar a saída do seguinte comando:

$ sed -n '5p' file-A

em

$ sed '5 c\
> "string extracted from previous sed command" file-B

Então, basicamente, eu quero substituir a linha x de um arquivo A com a linha x de um arquivo B. Estou aberto a quaisquer outras opções melhores.

    
por user1479589 24.02.2014 / 04:32

2 respostas

3

Se bem entendi, com dois exemplos de arquivo:

file-A :

abc
abc
abc
abc
line5-file-A
abc

e file-B :

def
def
def
def
line5-file-B
def

Você pode fazer assim:

% sed -e "5 c\$(sed -n '5p' file-A)" file-B
def
def
def
def
line5-file-A
def

Em seguida, a linha 5 em file-B será substituída pela linha 5 em file-A .

Você deve usar -i para fazer a alteração no local.

Outra maneira é usar awk :

awk 'FNR==NR{if(FNR==5){a=$0};next}{if(FNR==5){$0=a};print}' file-A file-B
    
por 24.02.2014 / 05:11
1

Talvez este não seja o melhor caminho a seguir, mas funciona

$ sed "5s/^.*$/$(sed -n '5p' file-A)/" file-B
    
por 24.02.2014 / 05:10

Tags