Combine awk scripts


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Combine awk scripts
# 1  
Old 09-19-2018
Combine awk scripts

Hi, Below command is working as expected, but would like to know how to club the two AWK scripts in the command into one
Code:
echo -e "MMS000101S0203430A|20180412E|\nMMB0001INVESTMENT||107-86193-01-03|\nMMB0001FUND||107-86193-04-01|\nMMC9991 " | awk -F'|' -v OFS=, '/^MMC9991/{print r"|"s,t; next} /^MMS0001/ { r=substr($1,8); s=substr($2,1,8);next} /^MMB0001/ { gsub("-",""); t=(t?t OFS:"")$3 }' | awk -F "," '{for (i=2;i<=NF;i++)print $1,$i}' OFS="|"

# 2  
Old 09-19-2018
Would this come near of what you need:
Code:
echo -e "MMS000101S0203430A|20180412E|\nMMB0001INVESTMENT||107-86193-01-03|\nMMB0001FUND||107-86193-04-01|\nMMC9991 " |
awk -F'|' -v OFS=, '
/^MMC9991/      {gsub ("-", "", t)
                 n = split (t, T, OFS)
                 for (i=1; i<n; i++) print rs, T[i]
                }
/^MMS0001/      {rs = substr($1,8) FS substr($2,1,8)
                }
/^MMB0001/      {t = t $3  OFS 
                }
'
01S0203430A|20180412,107861930103
01S0203430A|20180412,107861930401

These 2 Users Gave Thanks to RudiC For This Post:
# 3  
Old 09-19-2018
Apologies, i missed
Quote:
r=s=t="";
in my command, updated command below:
Code:
echo -e "MMS000101S0203430A|20180412E|\nMMB0001INVESTMENT||107-86193-01-03|\nMMB0001FUND||107-86193-04-01|\nMMC9991 " | awk -F'|' -v OFS=, '/^MMC9991/{print r"|"s,t; r=s=t=""; next} /^MMS0001/ { r=substr($1,8); s=substr($2,1,8);next} /^MMB0001/ { gsub("-",""); t=(t?t OFS:"")$3 }' | awk -F "," '{for (i=2;i<=NF;i++)print $1,$i}' OFS="|"

# 4  
Old 09-19-2018
So? Why don't you insert it into the proposal?
This User Gave Thanks to RudiC For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Combine awk commands into one

my code: gawk 'NR>'"${LASTLINENUM}"' && NR<='"${LINEENDNUM}"'' ${LOGFILE} | gawk '{l=$0;} /'"${STRING1}"'/ && /'"${STRING2}"'/ {for (i=NR-'"${BEFOREGLAF}"'; i<=NR+'"${AFTERGLAF}"'; i++) o=i; t++;} END { for(i=1; i<=NR; i++) if (o) print l; print t+=0;}' i would like to combine this into one... (5 Replies)
Discussion started by: SkySmart
5 Replies

2. Shell Programming and Scripting

Combine columns - awk

Need some help with this ... please 60644,NJ090237_0263_GRP,NJ090237_0263_VIEW,NJ090237_0263_PSGRP,NJ090237_0263_GOLD_CSGRP,,06E:0_08E:0_09E:0_11E:0,0CE5,TDEV,34,VP_TIER... (3 Replies)
Discussion started by: greycells
3 Replies

3. Shell Programming and Scripting

Combine these two into one liner awk?

ignore the simplicity of the foo file, my actual file is much more hardcore but this should give you the jist of it. need to combine the two awks into one liner. essentially, need to return the value of one particular field in a file that has multiple comma separated fields. thanks guys cat foo... (1 Reply)
Discussion started by: jack.bauer
1 Replies

4. Shell Programming and Scripting

How to combine two files with awk?

Hi, everyone! I have two files, I want to combine them as follows: File1 AAAA 23 45 AAAB 44 56 AAAC 34 65 AAAD 34 87 File2 AAAA 34 54 AAAE 34 56 Combined file AAAA 23 45 34 54 AAAB 44 56 AAAC 34 65 AAAD 34 87 AAAE 34 56 (13 Replies)
Discussion started by: xshang
13 Replies

5. Shell Programming and Scripting

combine awk and tr -d

Hi Everyone, awk 'BEGIN{print strftime("%c",1272814948)}' | tr -d '\n' how to change tr -d '\n' to be part of the awk? means awk this pchoh time, and awk also remove '\n', instead of using "|" to combine "tr" command. Thanks (2 Replies)
Discussion started by: jimmy_y
2 Replies

6. Shell Programming and Scripting

how to combine two scripts into one

I need to combine two scripts, into one script. One is to delete something, the to recreate. Here is the scripts: BIN=/usr/lbin LINE='device for 0101a01: lpd://172.25.41.111:515' while read LINE do prt=`echo $LINE | awk '{print $3 }'| cut -c 1-7` echo $prt #drv=`echo $LINE | awk -F":"... (4 Replies)
Discussion started by: ggoliath
4 Replies

7. Shell Programming and Scripting

Combine awk statements

I have an awk statement that works but I am calling awk twice and I know there has to be a way to combine the two statements into one. The purpose is to pull out just the ip address from loopback1. cat config.txt | nawk 'BEGIN {FS="\n"}{RS="!"}{if ( $0 ~ "interface loopback1" ) print$4}' | nawk... (5 Replies)
Discussion started by: numele
5 Replies

8. Shell Programming and Scripting

help with a script that will combine two separate scripts for solaris and aix

Hello experts, I have separate scripts (KSH) each for Solaris and AIX to install core applications (e.g. BigBrother). I also have a script called Installer that gives a menu list to select a particular application to install from a bunch of applications. Now I am trying to combine separate... (7 Replies)
Discussion started by: solaix14
7 Replies

9. UNIX for Dummies Questions & Answers

combine two awk codes

Hello How do I combine the following 2 codes in one, the purpose is to not generate the outfile1 awk '{print $9 "\t" $10 "\t" $11}' infile > outfile1 awk '{ gsub(/.fa/,""); print }' outfile1 > outfile2 Thanks Joseph (2 Replies)
Discussion started by: jdhahbi
2 Replies

10. Shell Programming and Scripting

i want to combine two awk scripts which is having same loop and filelist

hi, to all give me some idea below scripts file=`cat filelist` for filename in $file do awk '{ if ($0 ~ /system/ && flag == 0) { flag=1; print $0; } else if ($0 ~ /system/ && flag == 1) { printf("%s SYSLAY %s %s %s\n",$1,$3, $4, $5); } else print $0; }' $filename >... (6 Replies)
Discussion started by: LAKSHMI NARAYAN
6 Replies
Login or Register to Ask a Question