grep -v 13 zeros in a string


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting grep -v 13 zeros in a string
# 1  
Old 07-27-2012
grep -v 13 zeros in a string - Resolved

I have a sample file created with collectl that contains a targeted collection of the mysqld threads that are writing to raid0 up on AWS. The output collects what I want, but what I need is grep and/or regex help.

Here's the collectl statement:
Code:
collectl --procfilt $(pidof mysqld) -sD --dskfilt sd[jk] -oT --headerrepeat 100 > collectl_playback.output

The collectl_playback.output contains this sample:
Code:
04:46:18 sdk              0      0    0    0       0      0    0    0       0     0     0      0    0
04:46:18 sdj              0      0    0    0       0      0    0    0       0     0     0      0    0
04:46:19 sdk              0      0    0    0       0      0    0    0       0     0     0      0    0
04:46:19 sdj              0      0    0    0       0      0    0    0       0     0     0      0    0
04:46:20 sdk              0      0    0    0       0      0    0    0       0     0     0      0    0
04:46:20 sdj              0      0    0    0      64      0    2   32      32     0     0      0    0
04:46:21 sdk              0      0    0    0   12012   1877  290   41      41    24    71      0   23
04:46:21 sdj              0      0    0    0    9523   1878  232   41      40    32    95      0   23
04:46:22 sdk              0      0    0    0   42053   4285 1155   36      36    24    24      0   73
04:46:22 sdj              0      0    0    0   39106   4449  917   43      42   144   156      1  100

What I am having issue with after reading [234] of the 2,910 google hits for "regular expressions site:unix.com" is how to "grep -v" the entire line IF it has 13 Zeros in a row.
I do NOT want to see these 'hits'...
Code:
04:46:15 sdj              0      0    0    0       0      0    0    0       0     0     0      0    0
04:46:16 sdk              0      0    0    0       0      0    0    0       0     0     0      0    0

What I have tried is
Code:
grep '[0-9]\{3\}' collectl_playback.output
grep '[0]\{3\}' collectl_playback.output

with mixed results that I am not confident in its 'integrity'.

grep (GNU grep) 2.10 on an Ubuntu 12.04 LTS host.

Pages I have looked at are:
Regular Expressions
Regular Expressions in grep and
Regular Expression Examples seems the most informative.

Thank you for your time.

JJ

Last edited by Habitual; 07-27-2012 at 09:24 AM.. Reason: fastest reply ever!
# 2  
Old 07-27-2012
Include the whitespace and use "extended" regex.

Code:
grep -Ev '([ \t]+0){13}' input
grep -Ev '([[:space:]]+0){13}' input


Last edited by neutronscott; 07-27-2012 at 09:25 AM..
This User Gave Thanks to neutronscott For This Post:
# 3  
Old 07-27-2012
you are twice as good.
1 for fast reply.
1 for working command.

Thank you very much.

Edit. Props for alternatives!
# 4  
Old 07-27-2012
I like neutronscott's solution. Another way to do it is:
Code:
grep "^[0-9:]*[ \t][^ \t]*.*[1-9]" input

# 5  
Old 07-27-2012
noooooo...
remember, the first question you should as if you think what you want to do is probably useful to a lot of people I've probably already added a switch for it. Smilie

collectl -sD --dskopts z

will suppress lines with all zeros in them, as you can see was added in V3.6 with the command "collectl --whatsnew", something I added awhile ago because I can't remember either.

-mark
This User Gave Thanks to MarkSeger For This Post:
# 6  
Old 07-28-2012
Mark!

Your "style" in your options/switches suits me just fine. Smilie
So, the command I am now using hopefully that eliminates the 'extra' step is
Code:
collectl --procfilt $(pidof mysqld) --dskopts z -sD --dskfilt sd[jk] -oT  --headerrepeat 100 > mysqld_playback.out &

Would you agree?

Thanks,

JJ of c9

---------- Post updated 07-28-12 at 08:17 AM ---------- Previous update was 07-27-12 at 05:23 PM ----------

Quote:
Originally Posted by Habitual
...What I am having issue with after reading...
is not being able to retain what I've read.
Apparently, my retention and/or acuity suffer. As usual, the answer lies in the man pages. So I printed the sucker out.

Hats off to Mark Seger for his collectl package. I pity the box that doesn't have it.
This really is a Swiss Army Knife.

Thank you all for your time.

JJ of c9

Last edited by Habitual; 07-27-2012 at 06:58 PM.. Reason: changed OP collectl statement to new...
# 7  
Old 07-29-2012
but wait, what;s with the --hr 100? Are you trying to eliminate all but the first header? if so there's a switch for that too! --hr -1 suppresses all headers (btw - being lazy also invented hr to avoid typing headerrepeat Smilie), --hr 0 prints a single header and anything >0 repeats the header. generally when I find the need to do something different, I just invent a new switch. wait til you see the next version Smilie

It might be more interesting to tell me what you're trying to do and there might even be some more switches to help you out. for example if you're trying to generate output to load into mysql, maybe -P format would be more suitable.

also, how long do you want this command to run for and are the sampling intervals what you want? since this is actually interactive mode, you're sampling disk data every second and process data every 60. you can certainly change those but I often find it more useful to just run as a daemon and letting it run all the time. then, if you just want process/disk data, play back what was recorded and just display the subset you want. you may think you only want process/disk data now, but what if there's a problem and you wish you also had network, memory, etc at least recorded if not loaded into mysql?

-mark
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Grep a string and count following lines starting with another string

I have a large dataset with following structure; C 0001 Carbon D SAR001 methane D SAR002 ethane D SAR003 propane D SAR004 butane D SAR005 pentane C 0002 Hydrogen C 0003 Nitrogen C 0004 Oxygen D SAR011 ozone D SAR012 super oxide C 0005 Sulphur D SAR013... (3 Replies)
Discussion started by: Syeda Sumayya
3 Replies

2. Shell Programming and Scripting

Grep string in files and list file names that contain the string

Hi, I have a list of zipped files. I want to grep for a string in all files and get a list of file names that contain the string. But without unzipping them before that, more like using something like gzcat. My OS is: SunOS test 5.10 Generic_142900-13 sun4u sparc SUNW,SPARC-Enterprise (8 Replies)
Discussion started by: apenkov
8 Replies

3. Shell Programming and Scripting

grep exact string from files and write to filename when string present in file

I am attempting to grep an exact string from a series of files within a directory and append that output to the filename when it is present in the file. I've been after this all day with no luck. Thanks for your help in advance :wall:. (4 Replies)
Discussion started by: JC_1
4 Replies

4. Shell Programming and Scripting

Grep a string from input file and delete next three lines including the line contains string in xml

Hi, 1_strings file contains $ cat 1_strings /home/$USER/Src /home/Valid /home/Review$ cat myxml <projected value="some string" path="/home/$USER/Src"> <input 1/> <estimate value/> <somestring/> </projected> <few more lines > <projected value="some string" path="/home/$USER/check">... (4 Replies)
Discussion started by: greet_sed
4 Replies

5. Shell Programming and Scripting

Grep a string and write a value to next line of found string

Hi, I have two variables x and y. i need to find a particular string in a file, a workflow name and then insert the values of x and y into the next lines of the workflow name. basically it is like as below wf_xxxxxx $$a= $$b= $$c= figo $$d=bentley i need to grep the 'wf_xxxx' and then... (6 Replies)
Discussion started by: angel12345
6 Replies

6. Shell Programming and Scripting

grep on string and printing line after until another string has been found

Hello Everyone, I just started scripting this week. I have no background in programming or scripting. I'm working on a script to grep for a variable in a log file Heres what the log file looks like. The x's are all random clutter xxxxxxxxxxxxxxxxxxxxx START: xxxxxxxxxxxx... (7 Replies)
Discussion started by: rxc23816
7 Replies

7. Shell Programming and Scripting

Grep for a string and then grep using a string from that result

Hello, Thanks in advance for the query. There is a log file abcd.log which has multible line like this. "hello1" , "hello2", "hello3" , "hello4" , "hello5" I want to grep for the lines which has "hello4" & "hello5" and use "hello2" to grep the same log file again. All these should... (8 Replies)
Discussion started by: kzenthil
8 Replies

8. UNIX for Dummies Questions & Answers

| help | unix | grep - Can I use grep to return a string with exactly n matches?

Hello, I looking to use grep to return a string with exactly n matches. I'm building off this: ls -aLl /bin | grep '^.\{9\}x' | tr -s ' ' -rwxr-xr-x 1 root root 632816 Nov 25 2008 vi -rwxr-xr-x 1 root root 632816 Nov 25 2008 view -rwxr-xr-x 1 root root 16008 May 25 2008... (7 Replies)
Discussion started by: MykC
7 Replies

9. Shell Programming and Scripting

Grep a string and print a string from the line below it

I know how to grep, copy and paste a string from a line. Now, what i want to do is to find a string and print a string from the line below it. To demonstrate: Name 1: ABC Age: 3 Sex: Male Name 2: DEF Age: 4 Sex: Male Output: 3 Male I know how to get "3". My biggest problem is to... (4 Replies)
Discussion started by: kingpeejay
4 Replies

10. Shell Programming and Scripting

Remove O and preceeding zeros in a string

Hi all, Can anybody help me out to write a program in perl to remove O and preceeding zeros. for eg input is O0000123089 - output 123089 Thanks Mahalakshmi.A (10 Replies)
Discussion started by: mahalakshmi
10 Replies
Login or Register to Ask a Question