I have file with SQL output as
0001 firstname1 lastname1 0002 firstname2 lastname2 0003 firstname3 lastname3 0004 firstname4 lastname4
Expected output :
0001 firstname1 lastname1
0002 firstname2 lastname2
0003 firstname3 lastname3
0004 firstname4 lastname4
Let me know if this can be done with simple AWK or SED one liner
Of if I need to do it by updating SQL query which is input to this file, please help me with the sql query details.
Right now my .sql query redirects all output in one single line only.
anbu23
April 7, 2014, 7:03am
2
Which database? Can you show your sql script?
$ cat file
0001 firstname1 lastname1 0002 firstname2 lastname2 0003 firstname3 lastname3 0004 firstname4 lastname4
$ awk 'ORS = !(NR%3)? "\n" : FS ' RS=" " file
0001 firstname1 lastname1
0002 firstname2 lastname2
0003 firstname3 lastname3
0004 firstname4 lastname4
$ awk '{ for(i=1;i<=NF;i++)printf $i ( i%3 == 0 ? RS : FS ) }' file
0001 firstname1 lastname1
0002 firstname2 lastname2
0003 firstname3 lastname3
0004 firstname4 lastname4
2 Likes
RudiC
April 8, 2014, 7:17am
4
Try also
tr ' ' '\n' <file | paste -s -d' \n'
0001 firstname1 lastname1
0002 firstname2 lastname2
0003 firstname3 lastname3
0004 firstname4 lastname4
Be aware that not all systems accept the \n notion...
1 Like
OR
$ echo '0001 firstname1 lastname1 0002 firstname2 lastname2 0003 firstname3 lastname3 0004 firstname4 lastname4' | xargs -n 3
0001 firstname1 lastname1
0002 firstname2 lastname2
0003 firstname3 lastname3
0004 firstname4 lastname4
xargs -n 3 <file
1 Like
Hello,
One more approach for same.
xargs -n 3 < get_data_check_details_check121212
Output will be as follows.
0001 firstname1 lastname1
0002 firstname2 lastname2
0003 firstname3 lastname3
0004 firstname4 lastname4
NOTE: Where get_data_check_details_check121212 is input file.
EDIT: Sorry just now saw Akshay have posted the same command.
Thanks,
R. Singh
One more way
printf "%s %s %s\n" $(cat filename)
or
printf "%s %s %s\n" $(echo '0001 firstname1 lastname1 0002 firstname2 lastname2 0003 firstname3 lastname3 0004 firstname4 lastname4')
Thanks all and Akshay ...
awk 'ORS = !(NR%3)? "\n" : FS ' RS=" " file
-- This worked for me. But if there no lastname (3rd field is blank) it does not work.
I think If it can be done with simple sql ...
The SQL we are using is simple -
OUTPUT=`sqlplus -s <<EOF
select id, fname, lname from table_name
EOF`
echo $OUTPUT > file1
( I know this should be in different thread of this forum, but this is related to shell script )
Use quotes around shell variable references:
echo "$OUTPUT" > file1
or simply do:
sqlplus -s << EOF > file1
select id, fname, lname from table_name
EOF
Thanks Scrutinizer.... It worked