Visit Our UNIX and Linux User Community


Need help with regex


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Need help with regex
# 1  
Old 08-28-2013
Linux Need help with regex

i have some giga texts data, samples data below

Code:
803,7282012,343
703,7282013,0
600,7282012,0
600,7282012,0
600,7282012,0
600,7282012,0
803,7282012,277
600,7282012,0
403,7282012,0
303,7282013,7613
600,7282013,0
501,7282013,0
403,7282013,4079
803,7282013,0
600,7282013,0
303,7282013,0
803,7282013,7015
703,7282013,0
501,7282013,32568
600,7282013,0
703,7282013,10362

i want to extract the data for each date (column no.2) and stored to separate files, any line contain 7282012 will stored to 7282012.txt

sorry for my bad English
# 2  
Old 08-28-2013
You may try something like this:
Code:
awk -F, '{ print > ($2 ".txt") }' infile

Note that some awk implementations (or some system settings) could limit the number of concurrently open files.

Last edited by radoulov; 08-28-2013 at 01:04 PM..
This User Gave Thanks to radoulov For This Post:
# 3  
Old 08-28-2013
Quote:
Originally Posted by radoulov
You may try something like this:
Code:
awk -F, '{ print > ($2 ".txt") }' infile

Note that some awk implementations (or some system settings) could limit the number of concurrently open files, in that case you could use something like this:

Code:
awk -F, '{
  fn[f = $1 ".txt"]++ || c++ 
  if (c >= l) {
    for (F in fn) close(F)
    c = x
    }
  print >> f
  }' l=10 infile

Set l to the desired value (the # of open files).
thanks it's working well and also very fast. never think it's can be done by single line awk. i want to know also how to calculate the number of record base on value on column 1 and 2 , so the data after i extract is

Code:
8,7282012,343
7,7282013,0
6,7282012,0
6,7282012,0
6,7282012,0
6,7282012,0
8,7282012,277

the output that i want is
Code:
8,7282012,2
7,7282013,1
6,7282012,4

thanks in adv
# 4  
Old 08-28-2013
Code:
awk -F, 'END {
  for (e in cnt)
    print e, cnt[e]
  }
{ cnt[$1 FS $2]++ }
 ' OFS=, infile

This User Gave Thanks to radoulov For This Post:
 

Previous Thread | Next Thread
Test Your Knowledge in Computers #702
Difficulty: Medium
The MySQL LIKE operator is a logical operator that tests whether a string contains a specified pattern.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Sendmail K command regex: adding exclusion/negative lookahead to regex -a@MATCH

I'm trying to get some exclusions into our sendmail regular expression for the K command. The following configuration & regex works: LOCAL_CONFIG # Kcheckaddress regex -a@MATCH +<@+?\.++?\.(us|info|to|br|bid|cn|ru) LOCAL_RULESETS SLocal_check_mail # check address against various regex... (0 Replies)
Discussion started by: RobbieTheK
0 Replies

2. UNIX for Beginners Questions & Answers

Using Regex

Here i am writing a script to check&display only the valid mail address from a file echo "Plz enter the Target file name with path" read path if then echo "The valid mail address are:" email=$(grep -E -o "\b+@+\.{2,6}\b" $path ) echo "$email" fi The file contains the data like this:... (6 Replies)
Discussion started by: Meeran Rizvi
6 Replies

3. Shell Programming and Scripting

Perl, RegEx - Help me to understand the regex!

I am not a big expert in regex and have just little understanding of that language. Could you help me to understand the regular Perl expression: ^(?!if\b|else\b|while\b|)(?:+?\s+){1,6}(+\s*)\(*\) *?(?:^*;?+){0,10}\{ ------ This is regex to select functions from a C/C++ source and defined in... (2 Replies)
Discussion started by: alex_5161
2 Replies

4. UNIX for Dummies Questions & Answers

read regex from ID file, print regex and line below from source file

I have a file of protein sequences with headers (my source file). Based on a list of IDs (which are included in some of the headers), I'd like to print out only the specified sequences, with only the ID as header. In other words, I'd like to search source.txt for the terms in IDs.txt, and print... (3 Replies)
Discussion started by: pathunkathunk
3 Replies

5. Shell Programming and Scripting

Regex for First and Last name

I have a regex I'd like to implement and I believe it should be working and I have tested it on various websites that have regex testers but it always says the name is invalid. #!/bin/bash -x echo Enter the users first and last name. read name if... (11 Replies)
Discussion started by: woodson2
11 Replies

6. Shell Programming and Scripting

Converting perl regex to sed regex

I am having trouble parsing rpm filenames in a shell script.. I found a snippet of perl code that will perform the task but I really don't have time to rewrite the entire script in perl. I cannot for the life of me convert this code into something sed-friendly: if ($rpm =~ /(*)-(*)-(*)\.(.*)/)... (1 Reply)
Discussion started by: suntzu
1 Replies

7. Shell Programming and Scripting

regex help

I would like to search strings composed by only one type of charachter for example only strings composed by the charachter 'b' is it right? $egrep '\<(b+)+\>' filename Could be there some side effects? Regards. (1 Reply)
Discussion started by: and77
1 Replies

8. UNIX for Dummies Questions & Answers

regex

Can anyone give the detailed explanation on regex search i want to know the use of regex in sed and awk also...... the operators like ^,.,* ....etc i need it with some example.....kindly help on this. I gone through the man pages also..but i was not clear......... (1 Reply)
Discussion started by: sivakumar.rj
1 Replies

9. Shell Programming and Scripting

Need a regex

Hi, I am trying to grep for the following type of string from a document given below: 12637 1239 3356 12956 7004 7004 7004 13381 13381 *> 12.0.1.63 0 7018 21872 ? * 208.51.134.254 53 0 3549 7018 21872 ?... (1 Reply)
Discussion started by: Legend986
1 Replies

10. Shell Programming and Scripting

Regex

Hi, i want to match a string using perl that has got 5 pluses(+++++). i am using a function for this. $str1="+++++"; check($str1,"\\+"); sub check{ $str1=$_; $str2=$_; if($str1=~m/^$str2{5}$/){ print "Correct.\n"; }else{ print "Wrong..\n"; ... (6 Replies)
Discussion started by: deepakpv
6 Replies

Featured Tech Videos