Copie as linhas que possuem um caractere específico e cole-as em um novo arquivo

0

Eu tenho um arquivo que se parece com isso:

Cx  100 350

C   110 320

Cn  300 250

Cb  200 280

Cx  300 210

Eu quero um pouco de como bash scripting para selecionar linhas específicas que contêm caracteres "Cx" e "Cn" e colá-los em um novo arquivo.

    
por Dimitris Mintis 08.07.2018 / 19:10

2 respostas

1

Usando grep :

grep '^C[nx]' file >newfile

Isso selecionaria as linhas que iniciam com a string Cn ou Cx e salvará essas linhas em um novo arquivo chamado newfile .

Isso ainda selecionaria as linhas que começam com, por exemplo, Cxx ou Cn! .

Usando awk :

awk '$1 == "Cn" || $1 == "Cx"' file >newfile

Isso faria uma comparação de string em vez de uma correspondência de expressão regular. Ele deixaria passar apenas as linhas cuja primeira coluna delimitada por espaço em branco era exatamente Cn ou Cx e nada mais.

    
por 08.07.2018 / 19:49
0
perl -MList::MoreUtils=any -lane '
   print if any { $F[0] eq $_ } qw/Cx Cn/;
' input.txt

O módulo List :: MoreUtils é carregado para acessar a rotina any, que seleciona a primeira declaração de verdade a partir de uma infinidade de valores. A solução fornecida é extensível, se você quiser adicionar / modificar os primeiros campos para verificar.

Caso o módulo acima não possa ser encontrado, o código abaixo pode ser usado:

perl -lane 'for my $e ( qw/Cx Cn/ ) { print,last if $F[0] eq $e }' input.txt
    
por 09.07.2018 / 14:04