11-20-2014
awk -F'[\|,]'
Telling awk to use pipe and comma as field separator/delimiter for the input file.
I used backslash "\" to escape the pipe, but obviously it's not mandatory here, you can remove the backslash to avoid the warning.
'BEGIN {OFS="|"}
Defining "Output Field Separator" as pipe. This portion is executed only once.
Hint: Delete this part to see the difference.
This is one way of defining the OFS. Alternatively one can "hard-code" it in the print command, eg. print $1"|"$i
NR==1 {print;next}
NR is an internal awk variable, meaning "Number of Row" or line number, respectively.
The above line means if the line number is 1, print the line unmodified; read next line.
This portion is executend only once too.
{for (i=2;i<=NF;i++) print $1, $i}'
NF is an internal awk variable, meaning (total) "Number of Fields" in the particular line.
awk is looping here from field 2 to last field and printing $1, $i
($1 is the first field, $i is the second; in the next loop awk will print $1 and the third field and so on)
Hope I was clear.
10 More Discussions You Might Find Interesting
1. UNIX for Dummies Questions & Answers
Hi,
I want to replace a field in a text delimited file with the actual number of records in the same file.
HDR|ABCD|10-13-2008 to 10-19-2008.txt|10-19-2008|XYZ
DTL|0|5464-1|0|02-02-2008|02-03-2008||||F|||||||||
DTL|1|5464-1|1|02-02-2008|02-03-2008|1||JJJ... (3 Replies)
Discussion started by: ravi0435
3 Replies
2. Shell Programming and Scripting
Hi, could some help me convert CSV file (with double quoted strings) to pipe delimited file:
here you go with the same data:
1,Friends,"$3.99 per 1,000 listings",8158here " 1,000 listings " should be a single field.
Thanks,
Ram (8 Replies)
Discussion started by: Ram.Math
8 Replies
3. Shell Programming and Scripting
Hi All,
I need a shell script which could insert a sequence number column inside a dat file(pipe delimited).
I have the dat file similar to the one as shown below..
|A|B|C||D|E
|F|G|H||I|J
|K|L|M||N|O
|P|Q|R||S|T
As shown above, the column 4 is currently blank and i need to insert sequence... (5 Replies)
Discussion started by: nithins007
5 Replies
4. Shell Programming and Scripting
Hi All,
I have space delimited file similar to the one as shown below.. I need to convert it as a pipe delimited, the values inside the pipe delimited file should be as highlighted...
AA ATIU2345098809 009697 005374
BB ATIU2345097809 005445 006518
CC ATIU9685098809 003215 003571
DD... (7 Replies)
Discussion started by: nithins007
7 Replies
5. UNIX for Dummies Questions & Answers
i need to add a new field in a pipe delimited line. the field will be the current date today.
aa|a|s|w|1
as|oiy|oiy|oiy|2
given that all lines are uniformed in the number of fields
i want it to look like this:\
aa|a|s|w|1|20120126
as|oiy|oiy|oiy|2|20120126
please help :) (3 Replies)
Discussion started by: kokoro
3 Replies
6. Shell Programming and Scripting
I have a file which was pipe delimited, I need to make it tab delimited. I tried with sed but no use
cat file | sed 's/|//t/g'
The above command substituted "/t" not tab in the place of pipe.
Sample file:
abc|123|2012-01-30|2012-04-28|xyz
have to convert to:
abc 123... (6 Replies)
Discussion started by: karumudi7
6 Replies
7. Shell Programming and Scripting
I have a csv data file :
A,B,C,D,"A,B",E,"GG,H"
E,F,G,H,I,J,"S,P"
I need to replace all "," with "|" except the ones between double quotes i.e
A|B|C|D|"A,B"|E|"GG,H"
E|F|G|H|I|J|"S,P"
CAn someone assist? (8 Replies)
Discussion started by: Shivdatta
8 Replies
8. Shell Programming and Scripting
Hi guys,
I need to know how i can ignore Pipe '|' if Pipe is coming as a column in Pipe delimited file
for eg:
file 1:
xx|yy|"xyz|zzz"|zzz|12...
using below awk command
awk 'BEGIN {FS=OFS="|" } print $3
i would get xyz
But i want as :
xyz|zzz to consider as whole column... (13 Replies)
Discussion started by: rohit_shinez
13 Replies
9. Shell Programming and Scripting
I have a small quandry. I had server reports that I pulled from a database that came out pipe "|" delimited. The developers have now changed the format to CSV. The issue is that some fields have quotes around the text and other fields are blank with strings of commas denoting each field. To further... (2 Replies)
Discussion started by: dagamier
2 Replies
10. UNIX for Dummies Questions & Answers
Hi, I have a rquirement in unix as below .
I have a text file with me seperated by | symbol and i need to generate a excel file through unix commands/script so that each value will go to each column.
ex:
Input Text file:
1|A|apple
2|B|bottle
excel file to be generated as output as... (9 Replies)
Discussion started by: raja kakitapall
9 Replies
PIPE(2) System Calls Manual PIPE(2)
NAME
pipe - create an interprocess channel
SYNOPSIS
#include <u.h>
#include <libc.h>
int pipe(int fd[2])
DESCRIPTION
Pipe creates a buffered channel for interprocess I/O communication. Two file descriptors are returned in fd. Data written to fd[1] is
available for reading from fd[0] and data written to fd[0] is available for reading from fd[1].
After the pipe has been established, cooperating processes created by subsequent fork(2) calls may pass data through the pipe with read and
write calls. The bytes placed on a pipe by one write are contiguous even if many processes are writing. Write boundaries are preserved:
each read terminates when the read buffer is full or after reading the last byte of a write, whichever comes first.
The number of bytes available to a read(2) is reported in the Length field returned by fstat or dirfstat on a pipe (see stat(2)).
When all the data has been read from a pipe and the writer has closed the pipe or exited,
read(2) will return 0 bytes. Writes to a pipe with no reader will generate a note sys: write on closed pipe.
SOURCE
/sys/src/libc/9syscall
SEE ALSO
intro(2), read(2), pipe(3)
DIAGNOSTICS
Sets errstr.
BUGS
If a read or a write of a pipe is interrupted, some unknown number of bytes may have been transferred.
When a read from a pipe returns 0 bytes, it usually means end of file but is indistinguishable from reading the result of an explicit write
of zero bytes.
PIPE(2)