Sponsored Content
Top Forums Shell Programming and Scripting How can awk ignore the field delimiter like comma inside a field? Post 302986685 by gopal.biswal on Tuesday 29th of November 2016 02:13:56 AM
Old 11-29-2016
How can awk ignore the field delimiter like comma inside a field?

We have a csv file as mentioned below and the requirement is to change the date format in file as mentioned below.

Current file (file.csv)
----------------------
Code:
 empname,date_of_join,dept,date_of_resignation
ram,08/09/2015,sales,21/06/2016
"akash,sahu",08/10/2015,IT,21/07/2016

Required output file
----------------------
Code:
 empname,date_of_join,dept,date_of_resignation
ram,2015-09-08,sales,2016-06-21
"akash,sahu",2015-10-08,IT,2016-07-21

We are using below script for this. This script works fine for first record, but it does not give correct output for second record. Please see the actual output and script below-

Awk Script (This is .ksh file)
-------------------------------

Code:
 #!/bin/ksh
awk 'BEGIN{ FS=OFS="," 
            nf=split("2,4", f)                           # array of input field numbers
            nd=split(",7,4,-,4,2,-,1,2", d)        # array of date subfield info (in output order): prefix(out),pos(in),len(in)         
     }
     { for(i=1; i<=nf; i++){ 
           if($f[i]) {
               fmod=""
               for(j=1; j<=nd; j+=3) fmod=fmod sprintf("%s", d[j] substr($f[i], d[j+1], d[j+2]))
               $f[i] = fmod
           }
       } print
     }' file.csv

Actual Output which is not correct
--------------------------------------
Code:
 ram,2015-09-08,sales,2016-06-21
"akash,-u"-sa,08/10/2015,--IT,21/07/2016

Please suggest me, how Awk can handle the second record which contain comma inside a field?

Last edited by Don Cragun; 11-29-2016 at 03:42 AM.. Reason: Add CODE and ICODE tags, again.
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Set a variable field delimiter using awk

How can i set a variable field delimiter using awk?? I wanna do something like this ,but i canīt get the correct syntaxis : VARI=TEST echo "0121212TESTxvcshaashd"|awk 'FS="$VARI" {print $2}' Thanks. (2 Replies)
Discussion started by: Klashxx
2 Replies

2. UNIX for Advanced & Expert Users

Printing Field with Delimiter in AWK/cut

Hello, I had posted earlier about printing fields using AWK, but now I have a slightly different problem. I have text files in the format: 1*2,3,4,5 and wish to print the first, third, and fifth fields, including the asterisk and commas. In other words, after filtering it should look... (1 Reply)
Discussion started by: Jahn
1 Replies

3. Shell Programming and Scripting

Add field delimiter for the last field

I have a file with three fields and field delimiter '|' like: abc|12:13:45|123 xyz|12:87:32| qwe|54:21:09 In the file the 1st line has proper data -> abc|12:13:45|123 ,the 2nd line doesnt has data for the 3rd field which is okay , the 3rd line doesnt has data for the 3rd field as well the... (5 Replies)
Discussion started by: mehimadri
5 Replies

4. Shell Programming and Scripting

awk, comma as field separator and text inside double quotes as a field.

Hi, all I need to get fields in a line that are separated by commas, some of the fields are enclosed with double quotes, and they are supposed to be treated as a single field even if there are commas inside the quotes. sample input: for this line, 5 fields are supposed to be extracted, they... (8 Replies)
Discussion started by: kevintse
8 Replies

5. Shell Programming and Scripting

awk output field delimiter

Dear All, 1.txt (tab in between each value in a line) a b c a b c a c d you can see below, why with ~ i can output with tab, but = cannot? # awk -F'\t' '$2 ~ /b/' 1 a b c a b c # awk -F'\t' '$2 = "b"' 1 a b c a b c a b d ... (1 Reply)
Discussion started by: jimmy_y
1 Replies

6. Shell Programming and Scripting

awk :how to change delimiter without giving all field name

Hi Experts, i need to change delimiter from tab to "," sample test file cat test A0000368 A29938511 072569352 5 Any 2 for Ģ1.00 BUTCHERS|CAT FOOD|400G Sep 12 2012 12:00AM Jan 5 2014 11:59PM Sep 7 2012 12:00AM M 2.000 group 5 ... (2 Replies)
Discussion started by: Lakshman_Gupta
2 Replies

7. UNIX for Dummies Questions & Answers

Add a field separator (comma) inside a line of a CSV file

Hi... I can't find my little red AWK book and it's been a long while since I've awk'd. But I need to take a CSV file and convert the first word of the fifth field to its own field by replacing a space with a comma. This is for importing a spreadsheet of issues into JIRA... Example: a line... (9 Replies)
Discussion started by: Tawpie
9 Replies

8. UNIX for Beginners Questions & Answers

String has * as the field delimiter and I need echo/awk to escape it, how?

Hi, I am trying to read an Oracle listener log file line by line and need to separate the lines into several fields. The field delimiter for the line happens to be an asterisk. I have the script below to start with but when running it, the echo command is globbing it to include other... (13 Replies)
Discussion started by: newbie_01
13 Replies

9. Shell Programming and Scripting

awk to ignore whitespace in field

The awk below executes and update the desired field in my first awk. However, the white space between nonsynonymous SNV in $9 is being split into tabs and my attempt to correct this does not update the field unless it is removed. I am not sure what I am doing wrong? Thank you :). file1 ... (4 Replies)
Discussion started by: cmccabe
4 Replies

10. Shell Programming and Scripting

awk to parse comma separated field and removing comma in between number and double quotes

Hi Experts, Please support I have below data in file in comma seperated, but 4th column is containing comma in between numbers, bcz of which when i tried to parse the file the column 6th value(5049641141) is being removed from the file and value(222.82) in column 5 becoming value of column6. ... (3 Replies)
Discussion started by: as7951
3 Replies
pilot-addresses(1)					      General Commands Manual						pilot-addresses(1)

NAME
pilot-addresses - read and write address book databases to and from a Palm handheld device, such as those made from Palm, Handspring, Han- dera, TRGPro, Sony or other Palm Compatible Handheld PDA device SYNOPSIS
pilot-addresses -p <port> [-c category ] [-d category ] [-r file | -w file ] (Note that some options are not shown above) DESCRIPTION
pilot-addresses allows the user to read all entries in the Palm address book database, write new entries into the database, and delete a category or delete all entries in the database. TARGET DEVICE
The default serial device used to communicate with a Palm is /dev/pilot. If the environment variable $PILOTPORT is set, its value will override the default. A serial device specified on the command-line will be used regardless of any $PILOTPORT setting. OPTIONS
Several options exist, including... -p --port <port>, Use device file port to communicate with the Palm handheld device. If this is not specified, will look for the $PILOTPORT environ- ment variable. If both are not found, will fall back to /dev/pilot. -h --help Display help synopsis for pilot-addresses -v --version Display version of pilot-addresses -a Augments fields in address book records with additional information. The augmented information is placed before and separated from the field with a semi-colon, (;). Augmented information includes: category_name - placed in front of each record or ["Work" | "Home" | "Fax" | "Other" | "E-mail" | "Main" | "Pager" | "Mobile" ] - placed in front of each phone number field. Empty fields are not augmented. -c category Install records to category category by default. Normally pilot-addresses uses Unfiled as the default category. This option is over- ridden by the category specified in the record with the -a option. -d category Delete all records in the specified category before installing new records. -D Delete all address book records in all categories. Obviously, be very careful with this one. -e Escape all special characters with a backslash. This enables you to read and write entries with newline characters in a field or note. -q Causes pilot-addresses to be quiet and not prompt you to press the HotSync button. -r file Reads records from file and install them to the Palm address book database. (Use the -w file to get a template file for input records.) -t delim Include category in each record, use the delimiter specified to separate all fields of a record. Delimiters are specified as fol- lows: 3=tab, 2=;, 1=,. This overrides the default delimiter of comma between fields and semi-colon between a field's augmented information. (Please note that this may generate confusing results when used with the -a option.) -T Write a header line with field titles as the first line of the data file. -w file Get all address book records from the Palm address book database and writes them into file USAGE
The program will connect to a target device and port, prompt the user to HotSync, and perform the requested read or write operation speci- fied by the user. EXAMPLES
To write all address records in a Palm to the file addrbook.csv: pilot-addresses -w addrbook.csv or pilot-addresses -p /dev/irnine -w addrbook.csv To read the address book records in the file addrbook.csv and install them on a Palm: pilot-addresses -r addrbook.csv To read the address book records in the file addrbook.csv and place them into the Palm address book database category Special after first deleting all current records in the Special category on the palm: pilot-addresses -c Special -d Special -r addrbook.csv SEE ALSO
pilot-link(7) KNOWN BUGS
pilot-addresses has no known bugs. REPORTING BUGS
Report bugs at http://bugs.pilot-link.org/ AUTHOR
pilot-addresses originally written by Kenneth Albanowski, manual page was written by Robert Wittig <bob.wittig@gt.org>. Free Software Foundation Palm Computing Device Tools pilot-addresses(1)
All times are GMT -4. The time now is 02:48 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy