adicionando uma primeira linha vazia dentro do arquivo csv

6

Eu introduzo dados em um csv 'echo'-ing alguns valores em outro csv.

Eu tentei echo "" e na próxima linha echo "valores", mas eu recebo linhas vazias intermitentes ..

Eu preciso de uma linha vazia apenas no começo ....

    
por user3116123 11.02.2014 / 17:09

3 respostas

6

Existem muitas maneiras de fazer isso. Como você não explicou seu problema com nenhum detalhe, presumo que esteja fazendo algo assim:

values=$(grep foo csv1.csv)
echo "$values" > csv2.csv

De qualquer forma, você parece estar extraindo algumas linhas de um arquivo csv e inserindo-as em outro. Para adicionar uma linha vazia ao início do novo arquivo csv, você faz qualquer um destes:

echo  > csv2.csv; grep foo csv1.csv >> csv2.csv

Ou, se você já criou csv2.csv :

awk 'NR==1{print ""} {print}' csv2.csv > tmpfile && mv tmpfile csv2.csv

ou

perl -i -lpe 'print "" if $.==1' csv2.csv 

ou

sed -i '1 x;p;x;' csv2.csv 
    
por 11.02.2014 / 19:21
5

Use sed da seguinte forma para inserir uma linha em branco no começo de um arquivo x.txt :

 sed '1 i \
 ' x.txt
    
por 11.02.2014 / 17:19
1

Pelo que entendi, há dois problemas. Primeiro, você quer uma linha vazia no início e, em segundo lugar, você não quer linhas em branco intermediárias.

Primeira pergunta

Para isso, você pode fazer apenas echo "" >> filename no início do script.

Segunda pergunta

A página de informações do echo diz

'echo' writes each given STRING to standard output, with a space
between each and a newline after the last one.

Então, a nova linha que você recebe é devido ao eco anterior que você fez. Por exemplo, echo "bulbasaur" >> network.txt insere "bulbasaur" e também um caractere de nova linha ( \n ) no arquivo. Então, quando você fizer o segundo eco como echo "charmander" >> network.txt , haverá uma linha vazia entre o bulbasaur e o charmander.

Para remover o comportamento de inserção de nova linha de echo , use echo -n (consulte as informações ou página do manual do echo). Você pode fazer echo -n "bulbasaur" >> network.txt seguido por echo -n "charmander" >> network.txt para remover a nova linha inserida.

    
por 14.02.2014 / 05:16

Tags