awk modify multiple columns with pipes


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting awk modify multiple columns with pipes
# 8  
Old 09-20-2010
change awk to gawk
your awk don't like pipe

to test try
Code:
echo "a"| awk '{ print $0 | "cat 1>&2" }'


Last edited by john1212; 09-20-2010 at 06:42 PM.. Reason: adding ' before and after {}. NOW IT's OK
# 9  
Old 09-20-2010
Quote:
Originally Posted by john1212
change awk to gawk
your awk don't like pipe

to test try
Code:
echo "a"| awk { print $0 | "cat 1>&2" }

I get the same error with both:
Code:
$ echo "a"| awk { print $0 | "cat 1>&2" }
-bash: cat 1>&2: command not found
awk: cmd. line:1: {
awk: cmd. line:1:  ^ unexpected newline or end of string
$ echo "a"| gawk { print $0 | "cat 1>&2" }
-bash: cat 1>&2: command not found
gawk: cmd. line:1: {
gawk: cmd. line:1:  ^ unexpected newline or end of string
$ which awk
/bin/awk
$ which gawk
/bin/gawk

By the way, this works:
Code:
awk 'BEGIN{FS="`";RS="|";OFS="`";ORS="|"}{print $1,$2,$3,$4|"tidy -config tidy.cfg"} infile.csv > outfile.csv

I just cant add anything more after the piped statement. I'm realizing a workaround is to process one column at a time, each time placing it at the end, and then doing one final awk to rearrange the columns in correct order. That seems like a kludgey way to do it, though.

Last edited by bstamper; 09-20-2010 at 11:44 PM.. Reason: typo in the 'this works' line, $4"| => $4|"
# 10  
Old 09-20-2010
Is it good?
Code:
awk 'BEGIN{FS="`";RS="|";OFS="`";ORS="|"}{print $1,$2,$3,$4|"tidy -config tidy.cfg";print $5|"tidy -config tidy.cfg"; print $6,$7}' infile.csv > outfile.csv


Last edited by john1212; 09-20-2010 at 06:40 PM.. Reason: I tested it, OK
# 11  
Old 09-22-2010
Quote:
Originally Posted by john1212
Is it good?
Code:
awk 'BEGIN{FS="`";RS="|";OFS="`";ORS="|"}{print $1,$2,$3,$4|"tidy -config tidy.cfg";print $5|"tidy -config tidy.cfg"; print $6,$7}' infile.csv > outfile.csv

This places extra record separators where there should be only field separators.

I'm going with my workaround solution, placing each column to be processed at the end of the list.

Thanks,

Brian
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Average across multiple columns - awk

Hi forum members, I'm trying to get an average of multiple columns in a csv file using awk. A small example of my input data is as follows: cu,u3o8,au,ag -9,20,-9,3.6 0.005,30,-9,-9 0.005,50,10,3.44 0.021,-9,8,3.35 The following code seems to do most of what I want gawk -F","... (6 Replies)
Discussion started by: theflamingmoe
6 Replies

2. Shell Programming and Scripting

Comparing multiple columns using awk

Hello All; I have two files with below conditions: 1. Entries in file A is missing in file B (primary is field 1) 2. Entries in file B is missing in file A (primary is field 1) 3. Field 1 is present in both files but Field 2 is different. Example Content: File A ... (4 Replies)
Discussion started by: mystition
4 Replies

3. Shell Programming and Scripting

Awk: is it possible to print into multiple columns?

Hi guys, I have hundreds file like this, here I only show two of them: file 1 feco4_s_BB95.log ZE_1=-1717.5206260 feco4_t_BB95.log ZE_1=-1717.5169250 feco5_s_BB95.log ZE_1=-1830.9322060... (11 Replies)
Discussion started by: liuzhencc
11 Replies

4. Shell Programming and Scripting

Extracting multiple columns with awk

Hi everyone!! I need to apply a simple command to extract columns from a matrix, but I need to extract contemporary from the first to the tenth columns, than from the eleventh to the twentyth and so on... how can i do that? (1 Reply)
Discussion started by: gabrysfe
1 Replies

5. Shell Programming and Scripting

Awk match multiple columns in multiple lines in single file

Hi, Input 7488 7389 chr1.fa chr1.fa 3546 9887 chr5.fa chr9.fa 7387 7898 chrX.fa chr3.fa 7488 7389 chr21.fa chr3.fa 7488 7389 chr1.fa chr1.fa 3546 9887 chr9.fa chr5.fa 7898 7387 chrX.fa chr3.fa Desired Output 7488 7389 chr1.fa chr1.fa 2 3546 9887 chr5.fa chr9.fa 2... (2 Replies)
Discussion started by: jacobs.smith
2 Replies

6. Shell Programming and Scripting

Awk if-else syntax with multiple columns

I can't seem to get this to work. I can reformat the date field if it's the first field (and only field) in the file: However, I get a syntax error when the date field is the second field (or has any other columns following): I can use a ";" but then it puts each column on separate... (8 Replies)
Discussion started by: giannicello
8 Replies

7. Shell Programming and Scripting

Generating multiple new columns with awk

Hi, I'm trying to reformat a file to create a new columns reflecting the previous 2 over and over. By that I mean currently each observation has two columns and I want to create a third which has a value equal to 1 minus the sum of the previous two. This is slightly complicated as 1) I... (6 Replies)
Discussion started by: reformatplink
6 Replies

8. Shell Programming and Scripting

Extracting columns from multiple files with awk

hi everyone! I'd like to extract a single column from 5 different files and put them together in an output file. I saw a similar question for 2 input files, and the line of code workd very well, the code is: awk 'NR==FNR{a=$2; next} {print a, $2}' file1 file2 I added the file3, file4 and... (10 Replies)
Discussion started by: orcaja
10 Replies

9. Shell Programming and Scripting

Multiple pipes toward a single awk command

Hello, I would like to pipe two variables into awk, but I don't know how to do. Each variable, "a" and "b", are in fact a list of data. They are not files. So to get awk to work with it I am using: echo $a | awk 'FNR==NR{print $1}FNR!=NR{print $4}' The above works, but when I am... (5 Replies)
Discussion started by: jolecanard
5 Replies

10. Shell Programming and Scripting

AWK subtraction in multiple columns

AWK subtraction in multiple columns Hi there, Can not get the following: input: 34523 934 9485 3847 394 3847 3456 9384 awk 'NR==1 {for (i = 1; i <= NF; i++) {n=$i; next}; {n-=$i} END {print n}' input output: 21188 first column only,... (2 Replies)
Discussion started by: awkward
2 Replies
Login or Register to Ask a Question