Sponsored Content
Top Forums UNIX for Beginners Questions & Answers Replace a field in a comma separated file Post 303044850 by H squared on Thursday 5th of March 2020 09:58:41 AM
Old 03-05-2020
Thanks for the quick response.

I would mention that the number of arguments calling the script could be more than 2 and the number of fields to be transformed can be more than 2.

The field # 12 (though not present in my sample file) would be a new date field that would be transformed.

Could you please share your thoughts on this.

Please let me know if you need more inputs from my end.

Quote:
Originally Posted by vgersh99
a bit verbose and can be simplified - just following your description.

Code:
 awk -v fld='5,8' -f hsquared.awk myFile.csv

where hsquared.awk is:
Code:
BEGIN {
  FS=OFS=","
  fld=(!fld)?"5":fld
  fldN=split(fld, fldA,FS)
}
function convF(str ) {
 return (substr(str,1,4) "-" substr(str,5,2) "-" substr(str,7))
}
{
   for(i=1;i<=fldN;i++) {
     if ($(fldA[i]-1)==0 && $(fldA[i])!=0)
       $(fldA[i])=convF("19" $(fldA[i]))

     if ($(fldA[i]-1)==0 && $(fldA[i])==0)
       $(fldA[i])=convF("00010101")

     if ($(fldA[i]-1)==1) {
        if (length($(fldA[i])) == 5)
           $(fldA[i])=convF("200" $(fldA[i]))
        else
           $(fldA[i])=convF("20" $(fldA[i]))
     }

   }
}
1

results in:
Code:
29,A Store,A Street,1,2011-12-13,aaaa,0,1989-12-13
30,B Store,B Street,0,1999-12-13,aaaa,1,2006-12-13
31,C Store,C Street,1,2005-12-13,aaaaa,1,2008-12-13
32,D Store,D Street,0,0001-01-01,aaaa,1,2015-03-23
33,E Store,E Street,1,2012-12-12,bbbb,0,0001-01-01
34,F Store,F Street,1,2010-12-12,cccc,0,1997-12-12

awk -f hsquared.awk myFile.csv will do only field 5 by default
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Its PERL + Comma separated seventh field

Hi Friends, I'm working on a perl script, which seems to be simpler. But I'm very new to PERL scripting. I have a comma separated data file, from which I need to extract only the seventh field data out of available twenty fields to an array using perl. Any help would be much appreciated. ... (17 Replies)
Discussion started by: ganapati
17 Replies

2. Shell Programming and Scripting

Replace comma by space for specified field in record

Hi, i want to replace comma by space for specified field in record, i mean i want to replace the commas in the 4th field by space. and rest all is same throught the record. the record is 16458,99,001,"RIMOUSKI, QC",418,"N",7,EST,EDT,902 16458,99,002,"CHANDLER,... (5 Replies)
Discussion started by: raghavendra.cse
5 Replies

3. Shell Programming and Scripting

How to format file into comma separated field

Guys, Need you help, i have a a file content that look like this. Nokia 3330 <spaces><spaces><more spaces>+76451883874 Nokia 3610 +87467361615 so on and so forth, - there are so many spaces in between. - e.g.... (5 Replies)
Discussion started by: shtobias
5 Replies

4. Shell Programming and Scripting

Inserting string in between field in comma separated file

Hello Mates, I have one txt file having commo seperated values. I have to insert string "FALSE" in 2nd field from the end. E.G SE18 6RN,,,,5439070,1786840,,1000002148671600,123434 Out put should be: SE18 6RN,,,,5439070,1786840,FALSE,1000002148671600,123434 Can some one help me to... (8 Replies)
Discussion started by: krsnadasa
8 Replies

5. Shell Programming and Scripting

Comma separated file

Hi all, I have the following files types: FileA: 100, 23, 33, FileB: 22, 45, 78, and i want to make File C: 100,22 23,45 33,78 any nice suggestions for making it easy. (3 Replies)
Discussion started by: hen1610
3 Replies

6. Shell Programming and Scripting

Need Help - comma inside double quote in comma separated csv,

Hello there, I have a comma separated csv , and all the text field is wrapped by double quote. Issue is some text field contain comma as well inside double quote. so it is difficult to process. Input in the csv file is , 1,234,"abc,12,gh","GH234TY",34 I need output like below,... (8 Replies)
Discussion started by: Uttam Maji
8 Replies

7. Shell Programming and Scripting

How to split the comma separated file?

Hi, I have a filein unix like ABC,CDE BCD,KHL and the output i need is like column1 column2 ABC,CDE ABC ABC,CDE CDE BCD,KHL BCD BCD,KHL KHL. Can some body help me out? Hi, The code is working fine. But in my file each row does not have always 1 comma. It may... (6 Replies)
Discussion started by: jagdishrout
6 Replies

8. UNIX for Dummies Questions & Answers

[solved] Comma separated values to space separated

Hi, I have a large number of files which are written as csv (comma-separated values). Does anyone know of simple sed/awk command do achieve this? Thanks! ---------- Post updated at 10:59 AM ---------- Previous update was at 10:54 AM ---------- Guess I asked this too soon. Found the... (0 Replies)
Discussion started by: lost.identity
0 Replies

9. Shell Programming and Scripting

Comma separated to rows based on field

Hi to all, I have a file like: chr1 a1 a2 a3 a4 a5 a6,a7,a8,a9 chr1 b1 b2 b3 b4 b5 b6,b7 chr2 c1 c2 c3 c4 c5 c6,c7,c8,c9,c10 ... I would like an output like this: chr1 a6 chr1 a7 chr1 a8 chr1 a9 chr1 b6 chr1 b7 chr2 c6 chr2 c7 chr2 c8 (6 Replies)
Discussion started by: aec
6 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
remote(5)							File Formats Manual							 remote(5)

Name
       remote - remote host description file

Description
       The  systems  known  by	and their attributes are stored in an ASCII file that is structured somewhat like the file.  Each line in the file
       provides a description for a single system.  Fields are separated by colons (:).  Lines ending in a backslash () followed immediately by a
       newline character are continued on the next line.

       The  first  entry  is the names of the host system.  If there is more than one name for a system, the names are separated by vertical bars.
       After the name of the system comes the fields of the description.  A field name followed by an equal sign (=) indicates a string value fol-
       lows.  A field name followed by a number sign (#) indicates a following numeric value.

       Entries	named ``tip*'' and ``cu*'' are used as default entries by and the interface to as follows.  When is invoked with only a phone num-
       ber, it looks for an entry of the form ``tip300'', where 300 is the baud rate with which the connection is to be made.  When the  interface
       is used, entries of the form ``cu300'' are used.

Capabilities
       Capabilities  are  either strings (str), numbers (num), or Boolean flags (bool).  A string capability is specified by capability=value; for
       example, A numeric capability is specified by capability#value; for example, A Boolean capability is specified by simply listing the  capa-
       bility.

       at   (str)  Autocall unit type. This string is what is searched for in to decide if the generic dialer is to be used.  For further informa-
	    tion, see

       br   (num) The baud rate used in establishing a connection to the remote host.  This is a decimal number.  The default  baud  rate  is  300
	    baud.

       cm   (str)  An  initial	connection  message  to be sent to the remote host.  For example, if a host is reached through port selector, this
	    might be set to the appropriate sequence required to switch to the host.

       cu   (str) Call unit if making a phone call.  Default is the same as the field.

       di   (str) Disconnect message sent to the host when a disconnect is requested by the user.

       du   (bool) This host is on a dial-up line.

       dv   (str) UNIX devices to open to establish a connection.  If this file refers to a terminal line, attempts to perform an  exclusive  open
	    on the device to ensure only one user at a time has access to the port.

       el   (str)  Characters  marking an end-of-line.	The default is NULL.  Tilde (~) escapes are recognized by only after one of the characters
	    in or after a carriage-return.

       fs   (str) Frame size for transfers.  The default frame size is equal to BUFSIZ.

       hd   (bool) The host uses half-duplex communication; local echo should be performed.

       ie   (str) Input end-of-file marks.  The default is NULL.

       md   (bool) A hardwired device being used accepts modem control signals.  Used when is not present but modem signals are to be used.

       oe   (str) Output end-of-file string.  The default is NULL.  When tip is transferring a file, this string is sent at end-of-file.

       pa   (str) The type of parity to use when sending data to the host. The type can be one of even, odd, none,  zero  (always  set	bit  8	to
	    zero), or 1 (always set bit 8 to 1).  The default is even parity.

       pn   (str)  Telephone  numbers for this host.  If the telephone number field contains an @ sign, searches the file file for a list of tele-
	    phone numbers.  For further information, see

       tc   (str) Indicates that the list of capabilities is continued in the named description.  This is used primarily to share common  capabil-
	    ity information.

       Here is a short example showing the use of the capability continuation feature:
       UNIX-1200:
	    :dv=/dev/ttyd0:el=^D^U^C^S^Q^O:.br
	    :du:at=df112:ie=#$%:oe=^D:br#1200:
       ourvax|ox:
	    :pn=7654321:tc=UNIX-1200

Files
See Also
       tip(1c), acucap(5), phones(5)

																	 remote(5)
All times are GMT -4. The time now is 04:16 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy