Sponsored Content
Top Forums Shell Programming and Scripting Converting txt file into CSV using awk or sed Post 302672015 by agama on Sunday 15th of July 2012 03:45:14 PM
Old 07-15-2012
What version of awk are you running? (run `awk --version` to see)

---------- Post updated at 15:45 ---------- Previous update was at 15:42 ----------

This might be a fix (assuming it was length( a ) that awk was complaining about).

Code:
awk '
    function printit( )
    {
        if( stuff["auth"] )
        {
            sub( ",$", "",  stuff["des"] );
            for( x in stuff )
                if( index( stuff[x], "," ) )            # must quote if it has commas
                    stuff[x] = "\"" stuff[x] "\"";
            printf( "%s,%s,%s,%s,%s\n", stuff["title"], stuff["auth"], stuff["source"], stuff["des"], stuff["year"] );
        }
    }

    /^Record/ { printit(); delete stuff; n = ""; next; }
    /TI:/ { n = "title"; next; }
    /DN:/ { n = "dname"; next; }
    /AU:/ { n = "auth"; next; }
    /DE:/ { n = "des"; next; }
    /PY:/ { n = "year"; next; }
    /SO:/ { n = "source"; next; }
    /^..:/ { n = ""; next; }

    n == "" { next; }

    n == "des" {
        al = split( $0, a, ";" );
        for( i = 1; i <= al; i++ )
        {
            if( substr( a[i], length(a[i]) ) == ")" )
            {
                l = split( a[i], b, " " );
                stuff[n] = stuff[n] substr( b[l], 2, length( b[l] ) - 2 ) ",";
            }
        }
        next;
    }

    {
        sub( "^ +", "" );
        stuff[n] = stuff[n] $0 " ";
         next; 
    }

    END { printit(); }

'


Last edited by agama; 07-15-2012 at 04:46 PM.. Reason: formatting again
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

AWK CSV to TXT format, TXT file not in a correct column format

HI guys, I have created a script to read 1 column in a csv file and then place it in text file. However, when i checked out the text file, it is not in a column format... Example: CSV file contains name,age aa,11 bb,22 cc,33 After using awk to get first column TXT file... (1 Reply)
Discussion started by: mdap
1 Replies

2. Shell Programming and Scripting

converting xls file to txt file and xls to csv

I need to convert an excel file into a text file and an excel file into a CSV file.. any code to do that is appreciated thanks (6 Replies)
Discussion started by: bandar007
6 Replies

3. UNIX for Dummies Questions & Answers

Converting txt file to csv file

Hi, Using rsync, I've sent the output to a text file. This is the text file : Pls help me on converting this text file to a csv file. Probably a script or sth to convert the text file to a csv file. (3 Replies)
Discussion started by: anaigini45
3 Replies

4. Shell Programming and Scripting

Using awk/sed in handling csv file.

Please study the below script and the output Script: echo "Minimum ${host} ${process} response time=${min} ms" >> ${OUTDIR}/${OUTFILE}; echo "Maximum ${host} ${process} response time=${max} ms" >> ${OUTDIR}/${OUTFILE}; echo "Average ${host} ${process} response time=${avg} ms" >>... (0 Replies)
Discussion started by: ajincoep
0 Replies

5. Shell Programming and Scripting

Converting txt file in csv

HI All, I have a text file memory.txt which has following values. Average: 822387 7346605 89.93 288845 4176593 2044589 51883 2.47 7600 i want to convert this file in csv format and i am using following command to do it. sed s/_/\./g <... (3 Replies)
Discussion started by: mkashif
3 Replies

6. Shell Programming and Scripting

awk/sed/something else for csv file

Hi, I have a filename.csv in which there are 3 colums, ie: Name ; prefixnumber ; number root ; 020 ; 1234567 user1,2,3 ; 070 ; 7654321 What I want is to merge colum 2 and 3 that it becomes 0201234567 or even better +31201234567 so the country number is used and drop the leading 0.... (9 Replies)
Discussion started by: necron
9 Replies

7. Shell Programming and Scripting

Using csh / awk / sed to compare database sizes in a txt file

Hello, I have an output file showing database sizes across the 3 environments that I use (LIVE, TEST & DEVELOPMENT). I am trying to write a script that lets me know if the size of a db on one environment is different to its corresponding db on the other environments. Here is an example... (4 Replies)
Discussion started by: stevie_g
4 Replies

8. Shell Programming and Scripting

awk to print value from txt file to csv

Hi, I want to print two columns from a .txt file to a .csv file using awk. data in text file: Application -------------------------------------------------- ----------- OS Related Issues 1 EMEA Solutions ... (8 Replies)
Discussion started by: prashu_g
8 Replies

9. Shell Programming and Scripting

Using awk for converting xml to txt

Hi, I have a xml script, I converted it to .txt with values comma seperated using awk function. But I want the output values should be inside double quotes My xml script (Workorders.xml) is shown like below: <?xml version="1.0" encoding="utf-8" ?> <scbm-extract version="3.3">... (8 Replies)
Discussion started by: Viswanatheee55
8 Replies

10. Shell Programming and Scripting

Awk, sed, shell all words in INPUT.txt find in column1 of TABLE.txt and replce with column2 in

Hi dears i have text file like this: INPUT.txt 001_1_173 j nuh ]az 001_1_174 j ]esma. nuh ]/.xori . . . and have another text like this TABLE.txt j j nuh word1... (6 Replies)
Discussion started by: alii
6 Replies
MooseX::AttributeHelpers::MethodProvider::List(3pm)	User Contributed Perl Documentation    MooseX::AttributeHelpers::MethodProvider::List(3pm)

NAME
MooseX::AttributeHelpers::MethodProvider::List - method generator for MooseX::AttributeHelpers::Collection::List SYNOPSIS
package Stuff; use Moose; use MooseX::AttributeHelpers; has 'options' => ( metaclass => 'Collection::List', is => 'rw', isa => 'ArrayRef[Str]', default => sub { [] }, auto_deref => 1, provides => { elements => 'all_options', map => 'map_options', grep => 'filter_options', find => 'find_option', first => 'first_option', last => 'last_option', get => 'get_option', join => 'join_options', count => 'count_options', empty => 'do_i_have_options', sort => 'sorted_options', } ); no Moose; 1; DESCRIPTION
This is a role which provides the method generators for MooseX::AttributeHelpers::Collection::List. METHODS
meta PROVIDED METHODS
count Returns the number of elements in the list. $stuff = Stuff->new; $stuff->options(["foo", "bar", "baz", "boo"]); my $count = $stuff->count_options; print "$count "; # prints 4 empty If the list is populated, returns true. Otherwise, returns false. $stuff->do_i_have_options ? print "Good boy. " : die "No options! " ; find This method accepts a subroutine reference as its argument. That sub will receive each element of the list in turn. If it returns true for an element, that element will be returned by the "find" method. my $found = $stuff->find_option( sub { $_[0] =~ /^b/ } ); print "$found "; # prints "bar" grep This method accepts a subroutine reference as its argument. This method returns every element for which that subroutine reference returns a true value. my @found = $stuff->filter_options( sub { $_[0] =~ /^b/ } ); print "@found "; # prints "bar baz boo" map This method accepts a subroutine reference as its argument. The subroutine will be executed for each element of the list. It is expected to return a modified version of that element. The return value of the method is a list of the modified options. my @mod_options = $stuff->map_options( sub { $_[0] . "-tag" } ); print "@mod_options "; # prints "foo-tag bar-tag baz-tag boo-tag" sort Sorts and returns the elements of the list. You can provide an optional subroutine reference to sort with (as you can with the core "sort" function). However, instead of using $a and $b, you will need to use $_[0] and $_[1] instead. # ascending ASCIIbetical my @sorted = $stuff->sort_options(); # Descending alphabetical order my @sorted_options = $stuff->sort_options( sub { lc $_[1] cmp lc $_[0] } ); print "@sorted_options "; # prints "foo boo baz bar" elements Returns all of the elements of the list my @option = $stuff->all_options; print "@options "; # prints "foo bar baz boo" join Joins every element of the list using the separator given as argument. my $joined = $stuff->join_options( ':' ); print "$joined "; # prints "foo:bar:baz:boo" get Returns an element of the list by its index. my $option = $stuff->get_option(1); print "$option "; # prints "bar" first Returns the first element of the list. my $first = $stuff->first_option; print "$first "; # prints "foo" last Returns the last element of the list. my $last = $stuff->last_option; print "$last "; # prints "boo" BUGS
All complex software has bugs lurking in it, and this module is no exception. If you find a bug please either email me, or add the bug to cpan-RT. AUTHOR
Stevan Little <stevan@iinteractive.com> COPYRIGHT AND LICENSE
Copyright 2007-2009 by Infinity Interactive, Inc. <http://www.iinteractive.com> This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. perl v5.10.1 2010-01-02 MooseX::AttributeHelpers::MethodProvider::List(3pm)
All times are GMT -4. The time now is 08:14 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy