extract columns using grep or regular expressions


 
Thread Tools Search this Thread
# 1  
extract columns using grep or regular expressions

I am trying to print columns from a table whose name (header) matches a certain string.

E.g.,

patient1001 patient1002 patient2005 patient3005 patient4001
0 0 0 0 0
2 9 2 8 3
2 7 3 0 2

Say I want to print columns whose names end with "01"

patient1001 patient4001
0 0
2 3
2 2

I tried:

awk '{ for (i=1; i<=NF; i++) {if ($i ~ /01$/); print $i; }}' file > file.txt

but that failed. Thanks!
# 2  
Code:
awk 'NR==1 {
            for (i=1; i<=NF; i++) { if ($i~/*01$/) {arr[i]=i} 
            next
       } 
       { for(j=1; j<=NF; j++) { 
            if(j in arr) {printf("%s ", $j)}
          }
          print ""
       } ' inputfilename

# 3  
Quote:
Originally Posted by jim mcnamara
Code:
awk 'NR==1 {
            for (i=1; i<=NF; i++) { if ($i~/*01$/) {arr[i]=i} 
            next
       } 
       { for(j=1; j<=NF; j++) { 
            if(j in arr) {printf("%s ", $j)}
          }
          print ""
       } ' inputfilename

No, this is not working. It gives me the following error:
awk: cmd. line:9: }
awk: cmd. line:9: ^ unexpected newline or end of string


jim mcnamara, is it possible for you to correct it?
# 4  
Jim, thanks very much for the reply. However, I don't get anything returned if I run this on my test.txt file (as in the first post, space delimited). I also got an error in the pattern matching in the first line--so below I've put the entire header that I wanted to search for.

awk 'NR==1 {
for (i=1; i<=NF; i++) { if ($i~/patient1001/) {arr[i]=i}
next
}
{ for(j=1; j<=NF; j++) {
if(j in arr) {printf("%s ", $j)}
}
print ""
}} ' test.txt
 

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Computers #118
Difficulty: Easy
A Unix-like OS is the one that works like Unix systems, however, Unix-like system do not necessarily conform to the Single UNIX Specification (SUS) or POSIX (Portable Operating System Interface) standards.
True or False?

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

grep and regular expressions

Hi All, For the past many days I have solved a lot of grep and regular expression questions, Now I am in a search for a good quality set of questions that can help me build and check my knowledge of grep with regular expressions, it would be great if anyone could help me with my requirement. ... (1 Reply)
Discussion started by: rahulkalra9
1 Replies

2. Homework & Coursework Questions

Regular Expressions with GREP

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted! 1. The problem statement, all variables and given/known data: Given a text file (big_english.txt) containing roughly 250,000 words, answer the following using grep and... (2 Replies)
Discussion started by: blahblahblah123
2 Replies

3. Shell Programming and Scripting

How to grep using a line break in regular expressions?

Hi, I have a file as below, {#### if file then file else file } print file i need to fine the count of all the pattern - file, inside the { } i'm using a grep command as grep -c \{'*file*'\} fake.sh\ It doesn't gives me any result, i think the problem here is the... (5 Replies)
Discussion started by: divak
5 Replies

4. Shell Programming and Scripting

searching regular expressions with special characters like dot using grep

hi everybody I am a new user to this forum and its previous posts have been very useful. I'm searching in a file using grep for patterns like 12.13.444 55.44.443 i.e. of form <digit><digit>.<digit><digit>.<digit><digit><digit> Can anybody help me with this. Thanks in advance (4 Replies)
Discussion started by: jpriyank
4 Replies

5. Shell Programming and Scripting

How to extract text from string using regular expressions

Hi, I'm trying to use sed to extract some text and assign it to a variable. Can anyone provide me with some help? it would be much appreciated! I"m looking to extract for example: filename=/output/R34/2005_13_R34_C1042S_T83_CRFTXT_20081015.txt I'm trying to extract the 1042... (9 Replies)
Discussion started by: jtung
9 Replies

6. UNIX for Dummies Questions & Answers

grep and regular expressions :

I wrote a simple korn shell where I am trying to filter all the good record layouts of a file to only leave the bad ones to look at. That file is hudge. Aside from '# comments' and 'var=ssss', all record should follow a specific record layout, with comma seperated fields. Some fields can have any... (2 Replies)
Discussion started by: Browser_ice
2 Replies

7. Shell Programming and Scripting

regular expressions

Hi, can anyone advise me how to shorten this: if || ; then I tried but it dosent seem to work, whats the correct way. Cheers (4 Replies)
Discussion started by: jack1981
4 Replies

8. UNIX for Dummies Questions & Answers

More Grep - Regular Expressions

Hey all! I'm trying to search a file and return all instances of a word, let's say 'foo' in this case, as long as it's not a function name. For example: 1) int foo; //OK 2) //'this is totally fooed up' is also OK 3) int foo (int x, int y) //not ok to return I've tried a lot of regular... (7 Replies)
Discussion started by: Jombee
7 Replies

9. Programming

regular expressions in c++

How do I use the regular expressions in c++? (2 Replies)
Discussion started by: szzz
2 Replies

10. Shell Programming and Scripting

Regular Expressions

I'm trying to parse RichText to XML. I want to be able to capture everything between the '/par' tag in the RTF but not include the tag itself. So far all I have is this, '.*?\\par' but it leaves '\par' at the end of it. Any suggestions? (1 Reply)
Discussion started by: AresMedia
1 Replies

Featured Tech Videos