Por que saída em branco deste 'sed… END_SED | cortar …'?

0

A seguinte sed retorna ( ...| od -c ) sem ...|cut -d "\n" -f

0000000   1   9   2  \n   2   5   0  \n
0000010

Pseudocódigo

# http://unix.stackexchange.com/a/290407/16920
sed -n -f - /usr/share/X11/xkb/symbols/us <<END_SED | cut -d "\n" -f1 
/xkb_symbols "dvorak" {/,/^};/{
        /xkb_symbols "dvorak" {/=
        /^};/=
}
END_SED

mas saída em branco.

Sistema: Ubuntu 16.04 64 bit
Equipamento: Macbook Air 2013-mid
Sed: 4.2.2
Cortar, od: Coreutils 8.25

    
por Léo Léopold Hertz 준영 19.06.2016 / 08:41

1 resposta

2

O utilitário cut "corta" uma ou várias colunas de sua entrada. Como muitos outros utilitários Unix, cut é um leitor linha-a-linha baseado em fluxo que aplica seu processamento a cada linha de entrada e, em seguida, continua com a próxima linha.

Você não pode usar \n como o delimitador de cut , pois é isso que espera separar as linhas.

Uma maneira indireta de criar duas colunas para o cut trabalhar seria usar paste . O utilitário paste também lê a entrada linha por linha, mas armazena em buffer e gera a saída em colunas delimitadas por tabulação de acordo com a especificação que você fornece.

Neste caso:

$ mycommand | paste - -
192     250

Depois, com cut adicionado:

$ mycommand | paste - - | cut -f1
192
    
por 19.06.2016 / 09:59