Transposer une ligne / lignes de colonne en ligne en utilisant un shell

Je veux convertir une colonne de données dans un fichier txt en une ligne d’un fichier csv en utilisant les commandes unix.

Exemple:

 ApplChk1, ApplChk2, v_baseLoanAmountTI, v_plannedClosingDateField, downPaymentTI, 

c’est une colonne qui se présente dans un fichier txt

Je veux la sortie comme suit dans un fichier csv

 ApplChk1,ApplChk2,v_baseLoanAmountTI,v_plannedClosingDateField,downPaymentTI, 

S’il vous plaît laissez-moi savoir comment le faire.

Merci d’avance

S’il s’agit d’une seule colonne que vous souhaitez convertir en ligne, les possibilités sont nombreuses:

 tr -d '\n' < filename ; echo # option 1 OR xargs echo -n < filename ; echo # option 2 (This option however, will shrink spaces & eat quotes) OR while read x; do echo -n "$x" ; done < filename; echo # option 3 

S'il vous plaît laissez-nous savoir, à quoi ressemblerait l'entrée, pour les cas multi-lignes.

Une solution de bash pure et amusante (bash ≥ 4.1):

 mapfile -t < file.txt; printf '%s' "${MAPFILE[@]}" $'\n' 

Terminé!

 for i in `< file.txt` ; do echo -n $i; done; echo "" 

donne la sortie

 ApplChk1,ApplChk2,v_baseLoanAmountTI,v_plannedClosingDateField,downPaymentTI, 

Pour envoyer la sortie vers un fichier:

 { for i in `< file.txt` ; do echo -n $i ; done; echo; } > out.csv 

Quand je le lance, c'est ce qui se passe:

 [jenny@jennys:tmp]$ more file.txt ApplChk1, ApplChk2, v_baseLoanAmountTI, v_plannedClosingDateField, downPaymentTI, [jenny@jenny:tmp]$ { for i in `< file.txt` ; do echo -n $i ; done; echo; } > out.csv [jenny@jenny:tmp]$ more out.csv ApplChk1,ApplChk2,v_baseLoanAmountTI,v_plannedClosingDateField,downPaymentTI, 
 perl -pe 's/\n//g' your_file 

ce qui précède sortira sur stdout. si vous voulez le faire sur place:

 perl -pi -e 's/\n//g' your_file