How to get evenly Line numbers?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to get evenly Line numbers?
# 1  
Old 03-16-2011
How to get evenly Line numbers?

hi there ,

i m new to unix , i d like to ask how can a get only even numbered lines matches with the word i search from txt file

for example :



3461:1.D. The copyright laws of the place where you are located also govern
3471:1.E. Unless you have removed all references to Project Gutenberg:
3473:1.E.1. The following sentence, with active links to, or other immediate
3485:1.E.2. If an individual Project Gutenberg-tm electronic work is derived
3494:1.E.9.
3496:1.E.3. If an individual Project Gutenberg-tm electronic work is posted
3503:1.E.4. Do not unlink or detach or remove the full Project Gutenberg-tm
3507:1.E.5. Do not copy, display, perform, distribute or redistribute this
3513:1.E.6. You may convert to and distribute this work in any binary,
3525:1.E.7. Do not charge a fee for access to, viewing, displaying,
3529:1.E.8. You may charge a reasonable fee for copies of or providing
3562:1.E.9. If you wish to charge a fee or distribute a Project Gutenberg-tm
3569:1.F.
3571:1.F.1. Project Gutenberg volunteers and employees expend considerable

i want to grep (or any other commands ) the evenly number lines such as ;
.
.
.

3496:1.E.3. If an individual Project Gutenberg-tm electronic work is posted
3494:1.E.9.
3562:1.E.9. If you wish to charge a fee or distribute a Project Gutenberg-tm
.
.
.

i hope i m clear enough i tried many regular expressions but didn t work

THE PROBLEM IS PUNCTUATION ( : ) i believe bcus it reads them all as one string that makes it hard to seperate! , there might be other numbers in the line !

i don t know why this doesn t work grep -n '[0-9]*[08]*' list.txt
# 2  
Old 03-16-2011
I'm not 100% sure what you're doing in that regex but remember that * has a slightly different meaning in a regex than it does in shell globbing. In a shell, * means "match zero or more of any character". In a regex it means "match zero or more of the previous character". So [0-8]* tells it to match zero or more characters in the set 0-8. Also, in a regex, . is a special character meaning "any character".

So I think you could do:

Code:
grep "...[02468]" filename

which will match anything for the first three chars, then only even numbers for the last digit.
# 3  
Old 03-16-2011
i didn't completely understand what you mean. If you just want to get the lines with even number lines, you could try this:
Code:
kent$ seq 10|sed -n 'n;p;'
2
4
6
8
10

if this is what you want, you could
Code:
 sed -n 'n;p;' yourfile

# 4  
Old 03-16-2011
Quote:
Originally Posted by Corona688
I'm not 100% sure what you're doing in that regex but remember that * has a slightly different meaning in a regex than it does in shell globbing. In a shell, * means "match zero or more of any character". In a regex it means "match zero or more of the previous character". So [0-8]* tells it to match zero or more characters in the set 0-8. Also, in a regex, . is a special character meaning "any character".

So I think you could do:

Code:
grep "...[02468]" filename

which will match anything for the first three chars, then only even numbers for the last digit.

ok but point is "i need to get evenly line numbers"

Code:
grep "...[02468]" filename

same number mixed string combination can be placed any where in any line

3461:1.D. The copyright laws of the place where you are located also govern

what i need is get the line number 3461 from a line only if it s an even number!

---------- Post updated at 11:59 AM ---------- Previous update was at 11:56 AM ----------

[/CODE]if this is what you want, you could
Code:
 sed -n 'n;p;' yourfile

[/QUOTE]

is exactly wht i need , thank u very much bro.
# 5  
Old 03-16-2011
Code:
sed -n '/^[0-9]*[02468]:/p' myFile

# 6  
Old 03-16-2011
deleted since misunderstood the requirement.

Last edited by sk1418; 03-16-2011 at 02:09 PM.. Reason: misunderstood the requirement.
# 7  
Old 03-16-2011
Quote:
Originally Posted by sk1418
is this what you want?
Code:
awk '{split($1,a,":"); if( a[1]%2==0)print $0}' yourFile

output:
Code:
3494:1.E.9.
3496:1.E.3. If an individual Project Gutenberg-tm electronic work is posted
3562:1.E.9. If you wish to charge a fee or distribute a Project Gutenberg-tm

this can be simplified:
Code:
nawk -F: '!$1%2' myFile

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

VI editior line numbers

Hello All, I am very sure this a dumb question to many, but from my view its worth asking. When I do a vi on a file, on the right bottom side I am seeing something like below: 27,16-24 7% which tells me that I am on line 27 (which is the first number before the comma, i would like... (11 Replies)
Discussion started by: babyPen1985
11 Replies

2. Shell Programming and Scripting

Start the line only with numbers

hi, I need some unix command to replace the following thing. The line shuld start with oly numbers. If it starts with anything other than number it shuld be taken back to the last line. My file: 1234|test weye|test1|break 576|test|break|title 2369|test|line|break tite|break... (7 Replies)
Discussion started by: anshaa
7 Replies

3. Shell Programming and Scripting

Assign Line Numbers to each line of the file

Hi! I'm trying to assign line numbers to each line of the file for example consider the following.. The contents of the input file are hello how are you? I'm fine. How about you? I'm trying to get the following output.. 1 hello how are you? 2 I'm fine. 3 How about you? ... (8 Replies)
Discussion started by: abk07
8 Replies

4. UNIX for Dummies Questions & Answers

grep to get line numbers

I know if i use grep -n that the output will have the lines numbered but is there a way to grep the actually line number. so like this grep -n "one" /usr/dict/numbers 1:one 21:twenty-one 31:thirty-one 41:forty-one 51:fifty-one 61:sixty-one 71:seventy-one 81:eighty-one 91:ninety-one ... (1 Reply)
Discussion started by: alindner
1 Replies

5. Shell Programming and Scripting

More with line numbers

Hi All, How to get line numbers when we more on a file in LINUX thanks firestar (1 Reply)
Discussion started by: firestar
1 Replies

6. Shell Programming and Scripting

Removing Line numbers

Hi all, I have a file consisting of lines in such a format: separated by space and M1 EOS for fullstop (.) ] e.g M1 I M1 have M1 a M1 file M1 consisting M1 of M1 lines M1 in M1 such M1 a M1 format M1 EOS M2 This M2 is M3 an (4 Replies)
Discussion started by: my_Perl
4 Replies

7. Shell Programming and Scripting

Display Line numbers

Hi all experts, I am getting error in my shell scripts and i want to find out which lines is in errors. How i can display the line numbers . Is it NU command? Please give me some suggestions. (4 Replies)
Discussion started by: ma466
4 Replies

8. UNIX for Advanced & Expert Users

Add line numbers to end of each line

Hi i would like to add line numbers to end of each line in a file. I am able to do it in the front of each line using sed, but not able to add at the end of the file. Can anyone suggest The following code adds line number to start of each line sed = filename | sed 'N;s/\n/\t/' how can i... (5 Replies)
Discussion started by: rudoraj
5 Replies

9. Shell Programming and Scripting

add line numbers

Hello.. I have got one file ... I want to add line numbers with space form starting to ending.. for example...if the file is -------------------------- sand sorcd 2345 345 recds 234 234 5687 yeres 568 988 erfg4 67 -------------------------- I need the output ... (4 Replies)
Discussion started by: esham
4 Replies

10. UNIX for Dummies Questions & Answers

Printing line numbers

Maybe this question is out there, but I searched and didnt see it. To print my files I use more filename | lpr -Pprinter I would like to print my scripts with line numbers. How do I do this? (2 Replies)
Discussion started by: MizzGail
2 Replies
Login or Register to Ask a Question