Abdul Moiz
Abdul Moiz

Reputation: 1327

Add column header with value using sed in CSV

I am adding below 2 columns into my existing CSV. Everything is working fine apart from the header name or column name I import this CSV into MongoDB later

Current CSV:

"US_Business_Email_Data_01","AL"
"US_Business_Email_Data_01","AL"

Required CSV:

"FolderName","FileName"
"US_Business_Email_Data_01","AL"

Additional Information:

When converted to JSON in mongodb Current document:

 {
    "US_Business_Email_Data_01" : "US_Business_Email_Data_01",
    "AL" : "AL"
    }

When converted to JSON in mongodb Required document:

   {
    "FolderName" : "US_Business_Email_Data_01",
    "FileName" : "AL"
    }

My Bash Script:

Sed in my bash script is the following.

x=$zip_folder_name;y=$csv_name_updated; sed "s/$/,$x,$y/g" ${inner_file} > updated.csv
mv updated.csv ${inner_file}

Please Help Thanks in advance!

Upvotes: 1

Views: 427

Answers (1)

Abdul Moiz
Abdul Moiz

Reputation: 1327

It finally worked using awk, the original answer is https://stackoverflow.com/questions/46610794/how-to-add-new-column-with-header-to-csv-with-awk

ORIG_FILE=${inner_file}   
        NEW_FILE="updated.csv"
        awk -v d=$zip_folder_name -F"," 'BEGIN {OFS = ","} FNR==1{$(NF+1)="Folder Name"} FNR>1{$(NF+1)=d;} 1' $ORIG_FILE > $NEW_FILE
        mv ${NEW_FILE} ${ORIG_FILE}

        ORIG_FILE=${inner_file}   
        NEW_FILE="updated.csv"
        awk -v d=$csv_name_updated -F"," 'BEGIN {OFS = ","} FNR==1{$(NF+1)="File Name"} FNR>1{$(NF+1)=d;} 1' $ORIG_FILE > $NEW_FILE
        mv ${NEW_FILE} ${ORIG_FILE}

Upvotes: 1

Related Questions