awk to parse file and display result based on text


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting awk to parse file and display result based on text
# 1  
Old 03-13-2015
awk to parse file and display result based on text

I am trying using awk to open an input file and check a column 2/field $2 and if there is a warning then that is displayed (variantchecker): G not found at position 459, found A instead. The attached Sample1.txt is that file. If in that column/field there is a black space, then the text after the colon in $1 is displayed . Sample2.txt is that file.

The below code is close, but I can not seem to get it right. Thank you Smilie.

Code:
 awk 'NR>1 {$1=""; e=$2; print "Found error: ", $0} END{if (!e) print "No error";}' C:/Users/cmccabe/Desktop/annovar/${id}_name.txt

# 2  
Old 03-14-2015
It is not clear to me how to distinguish the error case from the case with no errors. In sample1 we have (variantchecker): in the second column, in sample2 it is NM_004004.5 GJB2_v001.

Can we assume for example that parentheses at the start of the second column indicate an error?
# 3  
Old 03-14-2015
Yes, the parentheses at the start of the second column does indicate an error. Thank you Smilie.
# 4  
Old 03-14-2015
Something like the following should work then:

Code:
awk 'NR>1 { if ($2 ~ /^\(/ ) {$1=""; print "Found error: ", $0} else { sub(/.*:/, "", $1); print "No error: " $1 }}' C:/Users/cmccabe/Desktop/annovar/${id}_name.txt

# 5  
Old 03-14-2015
Works great.... if the text in the no warning (Sample2.txt), p.(Val27Ile) was needed as well would:

Code:
 awk 'NR>1 { if ($2 ~ /^\(/ ) {$1=""; print "Found error: ", $0} else { sub(/.*:/, "", $1 $8); print "No error: " $1 "," $8}}' C:/Users/cmccabe/Desktop/annovar/${id}_name.txt

Desired output displayed:

Code:
 c.79G>A,p.(Val27Ile)

# 6  
Old 03-16-2015
Separating the substitutions works:

Code:
 awk 'NR>1 { if ($2 ~ /^\(/ ) {$1=""; print "Found error: ", $0} else { sub(/.*:/, "", $1); sub(/.*:/, "", $7); print "No error: " $1 "," $7}}' C:/Users/cmccabe/Desktop/annovar/${id}_name.txt

This User Gave Thanks to Walter Misar For This Post:
# 7  
Old 03-16-2015
Thank you, works great Smilie.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Programming

How to parse .nessus file to get result in human readable format?

Scripting Language: bash shell script, python I want to parse .nessus file in human readable format. If any one have any ideas please help me. (2 Replies)
Discussion started by: sk151993
2 Replies

2. Shell Programming and Scripting

awk to skip lines find text and add text based on number

I am trying to use awk skip each line with a ## or # and check each line after for STB= and if that value in greater than or = to 0.8, then at the end of line the text "STRAND BIAS" is written in else "GOOD". So in the file of 4 entries attached. awk tried: awk NR > "##"' "#" -F"STB="... (6 Replies)
Discussion started by: cmccabe
6 Replies

3. Shell Programming and Scripting

awk parse result that match data from file

i run command that return this result,example : gigabitethernet2/2/4:NotPresent, gigabitethernet2/1/17:UP, gigabitethernet2/1/10:UP, gigabitethernet2/1/5:UP, gigabitethernet2/1/9:UP, gigabitethernet2/1/36:DOWN, gigabitethernet2/1/33:DOWN, gigabitethernet2/1/8:UP,... (19 Replies)
Discussion started by: wanttolearn1
19 Replies

4. Shell Programming and Scripting

awk Parse And Create Multiple Files Based on Field Value

Hello: I am working parsing a large input file which will be broken down into multiples based on the second field in the file, in this case: STORE. The idea is to create each file with the corresponding store number, for example: Report_$STORENUM_$DATETIMESTAMP , and obtaining the... (7 Replies)
Discussion started by: ec012
7 Replies

5. Shell Programming and Scripting

Different cmd to execute and based on some pattern parse it and then store result in xlx format

Hi I have a different requirement, I need to run some application on my device from a file app_name.txt one by one which is like this: /usr/apps/email /usr/apps/message /usr/apps/settings after each app while it is running I need to execute again one cmd like ps -ef |grep... (2 Replies)
Discussion started by: Sanjeev Roy
2 Replies

6. Shell Programming and Scripting

AWK Command parse a file based on string.

AWK Command parse a file based on string. I am trying to write a shell script to parse a file based on a string and move the content of the file to another file. Here is scenario. File content below Mime-Version: 1.0 Content-Type: multipart/mixed; ... (2 Replies)
Discussion started by: aakishore
2 Replies

7. Shell Programming and Scripting

Processing result file based on a minimal value

After the great awk solution to my last problem (that saved me days of work) I thought I would try again. I now have a result file that consists of two identifier columns and then columns of data for each sample, with tabs as delimiters (note the sample number can vary depending on the... (8 Replies)
Discussion started by: fozrun
8 Replies

8. Shell Programming and Scripting

sed or awk to parse this text

I am just beginning with sed and awk and understand that they are "per" line input. That is, they operate on each line individually, and output based on rules, etc. But I have multi-line text blocks that looks as follows, and wish to ONLY extract the text between the first hyphen (-) and the... (13 Replies)
Discussion started by: bulgin
13 Replies

9. Shell Programming and Scripting

Parse a file to display lines containing a word

Hi! I'm trying to create a shell script to parse a file which might have multiple lines matching a pattern (i.e. containing some word). I need to return all lines matching the pattern, but stripping the contents of that line until the pattern is matched For example, if my input file was ... (4 Replies)
Discussion started by: orno
4 Replies

10. UNIX for Dummies Questions & Answers

display the result of wc -l with words before and after the result

hello showrev -p | wc -l returns: 381 What to do in case I want to have this output: number of lines returned by showrev -p is: 381 thx (3 Replies)
Discussion started by: melanie_pfefer
3 Replies
Login or Register to Ask a Question