Pattern Match and Rearrange the Fields in UNIX


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Pattern Match and Rearrange the Fields in UNIX
# 15  
Old 10-25-2015
For the latest fixed order you have specified you could also try:
Code:
awk '
/^<[Ss]ubject/ {
	sub(/>$/, "", $NF)
	for(i = 2; i <= NF; i++)
		d[substr($i, 1, 1)] = $i
	$0 = $1 OFS d["R"] OFS d["W"] OFS d["E"] OFS d["Q"] ">"
}
1' infile > outfile

# 16  
Old 10-25-2015
Hi...thanks for your inputs but seem to be getting an awk field error when the pattern matches...
# 17  
Old 10-25-2015
Quote:
Originally Posted by arunkesi
Hi...thanks for your inputs but seem to be getting an awk field error when the pattern matches...
You have suggestions from me and from Scrutinizer since your post #13 in this thread. Which awk script of those three awk scripts is giving you an error?

What EXACTLY is the error?

What EXACTLY was the input line awk was processing when it reported the error?
# 18  
Old 10-25-2015
Hi Zaxxon,
in code
Code:
awk '{sub(/>/,"",$NF); print $1,$5,$3,$4,$2">"}' infile
<Subject D="010101010101" B="1039502" C="2015-06-30" A="I">

please explain the highlighted..
Thanks,
# 19  
Old 10-25-2015
Quote:
Originally Posted by looney
Hi Zaxxon,
in code
Code:
awk '{sub(/>/,"",$NF); print $1,$5,$3,$4,$2">"}' infile
<Subject D="010101010101" B="1039502" C="2015-06-30" A="I">

please explain the highlighted..
Thanks,
The awk command sub(/>/, "", $NF) changes (or substitutes) the string matching the extended regular expression > (which matches a literal greater than sign) to an empty string (specified by ""), in the last field (specified by $NF) on the line. Or, simply stated, it removes the trailing greater than sign from the end of that input line.
# 20  
Old 10-26-2015
Thanks Mr Don.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Rearrange fields of delimited text file

I want to rearrange the fields of delimited text file after sorting first line (only): input file: a_13;a_2;a_1;a_10 13;2;1;10 the result should be: a_1;a_2;a_10;a_13 1;2;10;13 any help would be appreciated andy (20 Replies)
Discussion started by: andy2000
20 Replies

2. Shell Programming and Scripting

awk to print match or non-match and select fields/patterns for non-matches

In the awk below I am trying to output those lines that Match between file1 and file2, those Missing in file1, and those missing in file2. Using each $1,$2,$4,$5 value as a key to match on, that is if those 4 fields are found in both files the match, but if those 4 fields are not found then missing... (0 Replies)
Discussion started by: cmccabe
0 Replies

3. Shell Programming and Scripting

Rearrange or replace only the second line after pattern match or pattern match

Im using the command below , but thats not the output that i want. it only prints the odd and even numbers. awk '{if(NR%2){print $0 > "1"}else{print $0 > "2"}}' Im hoping for something like this file1: Text hi this is just a test text1 text2 text3 text4 text5 text6 Text hi... (2 Replies)
Discussion started by: invinzin21
2 Replies

4. Shell Programming and Scripting

Using awk to rearrange fields

Hi, I am required to arrange columns of a file i.e make the 15th column into the 1st column. I am doing awk 'begin {fs=ofs=","} {print $15,$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14}' ad.data>ad.csv the problem is that column 15 gets to column 1 but it is not comma separated with the... (10 Replies)
Discussion started by: seddoubt
10 Replies

5. UNIX for Dummies Questions & Answers

Match Pattern after certain pattern and Print words next to Pattern

Hi experts , im new to Unix,AWK ,and im just not able to get this right. I need to match for some patterns if it matches I need to print the next few words to it.. I have only three such conditions to match… But I need to print only those words that comes after satisfying the first condition..... (2 Replies)
Discussion started by: 100bees
2 Replies

6. Shell Programming and Scripting

Need one liner to search pattern and print everything expect 6 lines from where pattern match made

i need to search for a pattern from a big file and print everything expect the next 6 lines from where the pattern match was made. (8 Replies)
Discussion started by: chidori
8 Replies

7. Shell Programming and Scripting

Add fields in different files only if some fields between them match

Hi everybody (first time posting here) I have a file1 that looks like > 1,101,0.1,0.1 1,26,0.1,0.1 1,3,0.1,0.1 1,97,0.5,0.5 1,98,8.1,0.218919 1,99,6.2,0.248 2,101,0.1,0.1 2,24,3.1,0.147619 2,25,23.5,0.559524 2,26,34,0.723404with 762 lines.. I have another 'similar' file2 > ... (10 Replies)
Discussion started by: murpholinox
10 Replies

8. Shell Programming and Scripting

AWK break string into fields + pattern match

I am trying to break a string into separate fields and print the field that matches a pattern. I am using awk at the moment and have gotten this far: awk '{for(i=1;i<=NF;++i)print "\t" $i}' longstring This breaks the string into fields and prints each field on a separate line. I want to add... (2 Replies)
Discussion started by: Moxy
2 Replies

9. Shell Programming and Scripting

Match first pattern first then extract second pattern match

My input file: <accession>Q91G55</accession> <name>043L_IIV6</name> <protein> <recommendedName> <location> <position position="294"/> </location> <fullName>Uncharacterized protein 043L</fullName> <accession>P18556</accession> <name>1106L_ASFB7</name> <protein> <recommendedName>... (5 Replies)
Discussion started by: patrick87
5 Replies

10. Shell Programming and Scripting

awk sed cut? to rearrange random number of fields into 3 fields

I'm working on formatting some attendance data to meet a vendors requirements to upload to their system. With some help on the forums here, I have the data close. But they've since changed what they want. The vendor wants me to submit three fields to them. Field 1 is the studentid field,... (4 Replies)
Discussion started by: axo959
4 Replies
Login or Register to Ask a Question