CGI/Perl Guide | Learning Center | Forums | Advertise | Login
Site Search: in

  Main Index MAIN
INDEX
Search Posts SEARCH
POSTS
Who's Online WHO'S
ONLINE
Log in LOG
IN

Home: Perl Programming Help: Beginner:
issues with a grep command

 



dilbert
User

Jul 14, 2017, 12:32 AM

Post #1 of 6 (874 views)
issues with a grep command Can't Post

hello dear experts





this



Quote
egrep -o '^[[:space:]]?.*[[:digit:]]\b' bib.txt


runned on that



Quote

2:1 Jésus étant né à Bethléhem en Judée, au temps du roi Hérode, voici des mages d 'Orient arrivèrent à Jérusalem,
2 et dirent: Où est le roi des Juifs qui vient de naître ? car nous avons vu son étoile en Orient, et nous sommes venus pour l 'adorer.
3 Le roi Hérode, ayant appris cela, fut troublé, et tout Jérusalem avec lui.
4 Il assembla tous les principaux sacrificateurs et les scribes du peuple, et il s'informa auprès d'eux où devait naître le Christ.
5 Ils lui dirent: À Bethléhem en Judée; car voici ce qui a été écrit par le prophète:
6 Et toi, Bethléhem, terre de Juda, Tu n'es certes pas la moindre entre les principales villes de Juda, Car de toi sortira un chef Qui paîtra Israël, mon peuple.
7 Alors Hérode fit appeler en secret les mages, et s'enquit soigneusement auprès d'eux depuis combien de temps l'étoile brillait.
8 Puis il les envoya à Bethléhem, en disant: Allez, et prenez des informations exactes sur le petit enfant; quand vous l'aurez trouvé, faites-le-moi savoir, afin que j'aille aussi moi-même l'adorer.
9 Après avoir entendu le roi, ils partirent. Et voici, l'étoile qu 'ils avaient vue en Orient marchait devant eux jusqu'à ce qu'étant arrivée au-dessus du lieu où était le petit enfant, elle s'arrêta.
10 Quand ils aperçurent l'étoile, ils furent saisis d'une très grande joie.









gives back this





Quote
00001: 2:1 Jésus étant né à Bethléhem en Judée, au temps du roi Hérode, voici des mages d 'Orient arrivèrent à Jérusalem,
00002: 2 et dirent: Où est le roi des Juifs qui vient de naître ? car nous avons vu son étoile en Orient, et nous sommes venus pour l 'adorer.
00003: 3 Le roi Hérode, ayant appris cela, fut troublé, et tout Jérusalem avec lui.
00004: 4 Il assembla tous les principaux sacrificateurs et les scribes du peuple, et il s'informa auprès d'eux où devait naître le Christ.
00005: 5 Ils lui dirent: À Bethléhem en Judée; car voici ce qui a été écrit par le prophète:
00006: 6 Et toi, Bethléhem, terre de Juda, Tu n'es certes pas la moindre entre les principales villes de Juda, Car de toi sortira un chef Qui paîtra Israël, mon peuple.
00007: 7 Alors Hérode fit appeler en secret les mages, et s'enquit soigneusement auprès d'eux depuis combien de temps l'étoile brillait.
00008: 8 Puis il les envoya à Bethléhem, en disant: Allez, et prenez des informations exactes sur le petit enfant; quand vous l'aurez trouvé, faites-le-moi savoir, afin que j'aille aussi moi-même l'adorer.
00009: 9 Après avoir entendu le roi, ils partirent. Et voici, l'étoile qu 'ils avaient vue en Orient marchait devant eux jusqu'à ce qu'étant arrivée au-dessus du lieu où était le petit enfant, elle s'arrêta.
00010: 10 Quand ils aperçurent l'étoile, ils furent saisis d'une très grande joie.
00011:



what is aimed: i need to cut the numbers - and give them a single (separate) column



is this possible!?

Quote
00013:
00014:
00015:



Laurent_R
Veteran / Moderator

Jul 14, 2017, 7:38 AM

Post #2 of 6 (864 views)
Re: [dilbert] issues with a grep command [In reply to] Can't Post

Since you seem be be using egrep, I assume this is not a Perl question, and, in this case, you're on the wrong forum.

On the other hand, if this is a Perl question, please explain how.


Laurent_R
Veteran / Moderator

Jul 14, 2017, 7:45 AM

Post #3 of 6 (863 views)
Re: [dilbert] issues with a grep command [In reply to] Can't Post

To obtain the desired result with Perl, you might try this:


Code
use strict; 
use warnings;

while (my $line = <DATA>) {
printf "%05s %s", $., $line;

}



__DATA__
2:1 Jésus étant né à Bethléhem en Judée, au temps du roi Hérode, voici des mages d 'Orient arrivèrent à Jérusalem,
2 et dirent: Où est le roi des Juifs qui vient de naître ? car nous avons vu son étoile en Orient, et nous sommes venus pour l 'adorer.
3 Le roi Hérode, ayant appris cela, fut troublé, et tout Jérusalem avec lui.
4 Il assembla tous les principaux sacrificateurs et les scribes du peuple, et il s'informa auprès d'eux où devait naître le Christ.
5 Ils lui dirent: À Bethléhem en Judée; car voici ce qui a été écrit par le prophète:
6 Et toi, Bethléhem, terre de Juda, Tu n'es certes pas la moindre entre les principales villes de Juda, Car de toi sortira un chef Qui paîtra Israël, mon peuple.
7 Alors Hérode fit appeler en secret les mages, et s'enquit soigneusement auprès d'eux depuis combien de temps l'étoile brillait.
8 Puis il les envoya à Bethléhem, en disant: Allez, et prenez des informations exactes sur le petit enfant; quand vous l'aurez trouvé, faites-le-moi savoir, afin que j'aille aussi moi-même l'adorer.
9 Après avoir entendu le roi, ils partirent. Et voici, l'étoile qu 'ils avaient vue en Orient marchait devant eux jusqu'à ce qu'étant arrivée au-dessus du lieu où était le petit enfant, elle s'arrêta.
10 Quand ils aperçurent l'étoile, ils furent saisis d'une très grande joie.


which prints out:

Code
$ perl line_counter.pl 
00001 2:1 Jésus étant né à Bethléhem en Judée, au temps du roi Hérode, voici des mages d 'Orient arrivèrent à Jérusalem,
00002 2 et dirent: Où est le roi des Juifs qui vient de naître ? car nous avons vu son étoile en Orient, et nous sommes venus pour l 'adorer.
00003 3 Le roi Hérode, ayant appris cela, fut troublé, et tout Jérusalem avec lui.
00004 4 Il assembla tous les principaux sacrificateurs et les scribes du peuple, et il s'informa auprès d'eux où devait naître le Christ.
00005 5 Ils lui dirent: À Bethléhem en Judée; car voici ce qui a été écrit par le prophète:
00006 6 Et toi, Bethléhem, terre de Juda, Tu n'es certes pas la moindre entre les principales villes de Juda, Car de toi sortira un chef Qui paîtra Israël, mon peuple.
00007 7 Alors Hérode fit appeler en secret les mages, et s'enquit soigneusement auprès d'eux depuis combien de temps l'étoile brillait.
00008 8 Puis il les envoya à Bethléhem, en disant: Allez, et prenez des informations exactes sur le petit enfant; quand vous l'aurez trouvé, faites-le-moi savoir, afin que j'aille aussi moi-même l'adorer.
00009 9 Après avoir entendu le roi, ils partirent. Et voici, l'étoile qu 'ils avaient vue en Orient marchait devant eux jusqu'à ce qu'étant arrivée au-dessus du lieu où était le petit enfant, elle s'arrêta.
00010 10 Quand ils aperçurent l'étoile, ils furent saisis d'une très grande joie.


Is this what you want?


BillKSmith
Veteran

Jul 14, 2017, 9:02 AM

Post #4 of 6 (860 views)
Re: [dilbert] issues with a grep command [In reply to] Can't Post

I am not clear about what you want, but I can make a few observations. The command egrep is not appropriate for this type of task. Grep and it siblings are intended as filters, not editors. Clearly my choice for the editing language would be perl. Note that the syntax for regular expressions is slightly different for perl than it is for egrep.

Your regex appears to specify zero or one space characters followed by zero or more characters. Because '.' can match a space, this is no different than asking for zero or more characters. I am not sure what you intend.

The first verse in your example is numbered '2:1'. (Probably because the first two verses are translated as a single sentence.) In order to extract the verse numbers accurately, you must consult the introduction to your text and find out how special cases are handled.

Please show the exact output you expect from your sample text. It would be better to attach files rather than quoting to eliminate confusion between newlines in the file and line wrap in the post.
Good Luck,
Bill


Laurent_R
Veteran / Moderator

Jul 15, 2017, 2:19 AM

Post #5 of 6 (850 views)
Re: [BillKSmith] issues with a grep command [In reply to] Can't Post


In Reply To
The first verse in your example is numbered '2:1'. (Probably because the first two verses are translated as a single sentence.) In order to extract the verse numbers accurately, you must consult the introduction to your text and find out how special cases are handled.


This appears to be the beginning of the second Chapter of Matthew's gospel. So, the 2 stands for the chapter number, and the other numbers are for the individual verses.


BillKSmith
Veteran

Jul 15, 2017, 4:52 AM

Post #6 of 6 (846 views)
Re: [Laurent_R] issues with a grep command [In reply to] Can't Post

Laurent,

Good Call. I had identified the passage correctly, but never made the connection. My advice still stands. In rare cases, the discovery of text older than the numbers has justified adding verses which need special numbers.
Good Luck,
Bill

 
 


Search for (options) Powered by Gossamer Forum v.1.2.0

Web Applications & Managed Hosting Powered by Gossamer Threads
Visit our Mailing List Archives