Bash :: anexar texto à saída do arquivo

0

Sou muito novo no Shell Scripting, por isso talvez seja uma solução muito fácil, mas estou com dificuldades para fazê-lo funcionar. Eu tenho um arquivo com este conteúdo:

example1.eu 
example2.eu 
example3.eu

O que eu estou tentando fazer é a saída do conteúdo de um arquivo para uma formatação de linha única para algo como isto.

test.example1.eu,test.example2.eu,test.example3.eu

e assim por diante.

Eu tenho isso no meu script, mas não consigo imaginar como "testar" a primeira entrada do arquivo.

cat file | xargs | sed -e 's/ /,test./g'

example1.eu,test.example2.eu,test.example3.eu

Por favor, informe Obrigado

    
por PLouro 09.03.2018 / 23:39

2 respostas

2

Você pode usar "colar" para definir o delimitador. Por exemplo,

cat file | sed -e 's/^/test./' | paste -sd ','

Editar: versão melhorada (comentário de tripleee)

sed file -e 's/^/test./' | paste -sd ','
    
por 10.03.2018 / 00:20
0

Isso pode ser feito usando o comando awk :

 $ awk '{a=a"test."$0","}END{sub(/,$/,"",a);print a}' file
 test.example1.eu,test.example2.eu,test.example3.eu

Isso cria uma variável de string a e acrescenta cada linha e uma vírgula à string. Em seguida, substitui a vírgula final com nada e imprime a string.

Resposta anterior com vírgula à direita:

 $ awk 'BEGIN{ORS=","}{print "test."$0}' file
test.example1.eu,test.example2.eu,test.example3.eu,

Isso define o Separador de Registro de Saída como uma vírgula e, em seguida, imprime cada linha com test. prefixada à string.

    
por 10.03.2018 / 00:56