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