Adicione aspas e vírgulas a cada palavra de um arquivo

1

Eu tenho uma lista de palavras como:

string1
string2
string3
....
string12312

Como faço para converter essas palavras de tal maneira que a saída poderia ser usada como um array JS, ou seja, "String1", "String2" ..., "String12312" --- em outras palavras, como adicionar aspas? e vírgulas? Eu entendo que isso seja feito no shell, mas eu acho que qualquer outra solução estaria bem, desde que o resultado possa ser convertido em um array.

    
por thevangelist 24.12.2015 / 16:34

5 respostas

8

Aqui está uma maneira:

sed 's/^\|$/"/g' file | paste -d, -s
"string1","string2","string3","....","string12312"
    
por 24.12.2015 / 16:52
2

Se você não tem medo da vírgula no fim da linha, pode usar

printf '"%b", ' $(<file)

quais saídas

"string1", "string2", "string3", "....", "string12312",
    
por 24.12.2015 / 17:47
2

Usando o Awk:

awk '{printf "\"%s\", ", $0}' file
    
por 24.12.2015 / 19:54
2
xargs printf '"%s", ' <file

... funcionará com seus dados de exemplo:

"string1", "string2", "string3", "....", "string12312",
    
por 24.12.2015 / 22:01
1

Poderia sempre transformá-lo em um array JSON:

#!/usr/bin/env perl
use strict;
use warnings;

use JSON;

chomp ( my @data = <DATA> ); 
print to_json ( \@data );

__DATA__
string1
string2
string3
string12312

Ou como um forro:

perl -MJSON -e 'print to_json ( [map{s/\n//gr}<>] )'

Pipe em stdin ou especifique um nome de arquivo (como grep / awk etc.)

Ambas as saídas (esta última quando alimentadas com o seu exemplo):

["string1","string2","string3","string12312"]

Pode formatá-lo como "bonito" JSON com print to_json ( \@data, {pretty=>1}) , o que adicionará avanços de linha e recuo.

(aquele forro acima é baseado em um perl mais recente que você pode ter instalado. Se isso não funcionar: perl -MJSON -e 'chomp(@a=<>);print to_json ( \@a )'

    
por 24.12.2015 / 17:20