Movendo linhas com o bash quando houver texto acima ou abaixo

0

Eu tenho um file.txt assim:

foo
bar
foo
bar

Eu queria que fosse parecido com:

foobar
foobar

foo é sempre o começo da linha "primária" e bar da linha "secundária".

O fechamento que eu tenho é assim:

sed -n '1{h;n;G};p' file.txt

Mas este comando apenas muda a ordem, em vez da saída desejada, eu obtenho:

bar
foo
foo
bar

Alguma ideia?

    
por sysfiend 01.03.2017 / 18:12

1 resposta

2

Os seguintes itens funcionam para o seu exemplo:

sed -n '/foo/{N;s/\n//p}'

Isso encontra foo , lê a próxima linha e depois remove a nova linha entre eles.

Dependendo de suas condições precisas, você pode querer ancorar a partida com:

sed -n '/^foo$/{N;s/\n//p}'.

Alguns dos recursos avançados de sed podem ser assustadores, mas isso é uma boa referência .

    
por 01.03.2017 / 19:13

Tags