Aqui está uma maneira:
sed 's/^\|$/"/g' file | paste -d, -s
"string1","string2","string3","....","string12312"
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.
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",
Usando o Awk:
awk '{printf "\"%s\", ", $0}' file
xargs printf '"%s", ' <file
... funcionará com seus dados de exemplo:
"string1", "string2", "string3", "....", "string12312",
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 )'