Sponsored Content
Top Forums Shell Programming and Scripting perl: reg.expr: combine starting and ending removal in one exprecion Post 302348141 by alex_5161 on Thursday 27th of August 2009 11:51:30 AM
Old 08-27-2009
KevinADC
Very BIG thank you!!
So much appreciate so informative and complete answer!!!
For sure I own you at least beer! Smilie
You have showed many different way to do this with reg.exp., plus you discovered for me the Benchmark!!!
Very appreciate!!

You are right: double \s+ is most efficient!
Code:
                Rate regex_or replace single_or for_plus double_star for_star double_plus
regex_or     22791/s       --    -26%      -49%     -53%        -63%     -67%        -78%
replace      30919/s      36%      --      -31%     -36%        -50%     -56%        -70%
single_or    44823/s      97%     45%        --      -7%        -28%     -36%        -57%
for_plus     48188/s     111%     56%        8%       --        -22%     -31%        -53%
double_star  61837/s     171%    100%       38%      28%          --     -11%        -40%
for_star     69591/s     205%    125%       55%      44%         13%       --        -33%
double_plus 103385/s     354%    234%      131%     115%         67%      49%          --

(It is strange that the '|' - 'or' in reg exp. does not work in debugin. But in a sub it works! In 'perl -d -e 0' :
Code:
  DB<387> $str="    some val    "; $str=~s/^\s+||\s+$//;print ">$str<";
>some val    <
  DB<388> $str="    some val    "; $str=~s/^\s*||\s*$//;print ">$str<";
>some val    <
  DB<389> sub single_or {my $string = shift;$string =~ s/^\s+|\s+$//g;return $string;}

  DB<390> print ">".single_or ($str)."<";
>some val<
  DB<384> $str="    some val    "
  DB<385> $str=~s/^\s*(\S*(?:\s+\S+)*)\s*$/\1/; print ">$str<";
>some val<

Once again: THANK YOU!

Last edited by alex_5161; 08-27-2009 at 12:59 PM..
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Text replace by position instead of reg expr.

Can we replace the contents the of the rows of file, from one position to another position by mentioning, some start position & the width? (4 Replies)
Discussion started by: videsh77
4 Replies

2. Shell Programming and Scripting

var substitution in a reg expr ?

In a shell script, how I can achieve substitution of shell script var to a regular expression, as shown below. var=`head -1 file1` awk '$0!~/$var/ {print $0}' file1 > file2 In the case above $var value literally considered for non-exists criteria. (3 Replies)
Discussion started by: videsh77
3 Replies

3. UNIX for Dummies Questions & Answers

scipt dividing strings /reg expr

Hello! I've got txt-file containing lots of data in sentences like this: ;;BA;00:00:03:00;COM;CLOQUET-LAFOLLYE;SIMON; but sometime more than on in a line like this: ;;BA;00:00:03:00;COM;CLOQUET-LAFOLLYE;SIMON;;;BA;00:00:03:00;REA;RTL9;;;;BAC;:00;TIT;SEMAINE SPECIALE ~SSLOGAN~T DVD;; ... (3 Replies)
Discussion started by: maco_home
3 Replies

4. Shell Programming and Scripting

PERL: Simple reg expr validate 6 digits number

Hi there! I'm trying to validate a simple 6 digits number with reg expr. I ONLY want 6 digits so when i type 7 digits the script should no validate the number. I've write this code: #!/usr/bin/perl while(<STDIN>){ if($_=~/\d{6}/){ print "Bingo!\n"; ... (2 Replies)
Discussion started by: BufferExploder
2 Replies

5. Shell Programming and Scripting

print column that match reg expr

Hi all, I want to cut a column which match the regular expression "beta", if I don't know the column number? cat test alpha;beta;gamma 11;22;33 44;55;66 77;88;99 should be command .... beta 22 55 (6 Replies)
Discussion started by: research3
6 Replies

6. Programming

How to prevent incorrect string using reg expr in Java?

Hi All, I need your input on how to mask out / ignore a string that does not match a working regular expression (continually refining) pattern in Java. Below is the code snippet which is picking up all the lines with the correct regular expression string except one known so far: public... (0 Replies)
Discussion started by: gjackson123
0 Replies

7. Shell Programming and Scripting

if statement to check files with different ending but same starting name

I am trying to check if files staring with filename but ending with diffent dates e.g. filename.2011-10-25. The code I am using is below if It works find only if one file is present but returns binary operator expected when there are mulptiple files. Please help me correcting it. I... (5 Replies)
Discussion started by: ningy
5 Replies

8. UNIX for Advanced & Expert Users

Pring starting and ending numbers using UNIX

Hi all, I need to do scrip for printing starting and ending numbers along with count in given file.:wall: Input: a.txt 10000030 10000029 10000028 10000027 10000026 10000024 10000023 10000021 10000018 10000018 10000017 10000016 10000015 10000014 (2 Replies)
Discussion started by: jackbell2013
2 Replies

9. Shell Programming and Scripting

Text to column starting/ending with special character in each row

Hello, Here is my text data excerpted from the webpage: input My target is to get: What i tried is: sed 's/.*\(connector\)/1/' input > output but all characters coming before the word "connector" are deleted which is not good for me. My question: (9 Replies)
Discussion started by: baris35
9 Replies

10. UNIX for Beginners Questions & Answers

Search for words starting and ending with

im trying to search for a WORD in a file which begins with a number followed by a hypen follwed multiple words and end with a dot "." and pront the entire line which matches the above. Please note that there is a space at the begining of each line i/p file 19458 00000-CONTROL-PARA.... (5 Replies)
Discussion started by: anijan
5 Replies
expr(1) 						      General Commands Manual							   expr(1)

NAME
expr - evaluate arguments as an expression SYNOPSIS
arguments DESCRIPTION
takes arguments as an expression, evaluates, then writes the result on the standard output. Terms in the expression must be separated by blanks. Characters special to the shell must be escaped. Note that rather than the null string, is returned to indicate a zero value. Strings containing blanks or other special characters should be quoted. Integer-valued arguments can be preceded by a unary minus sign. Internally, integers are treated as 32-bit, 2's complement numbers. The operators and keywords are listed below. Characters that need to be escaped are preceded by The list is in order of increasing prece- dence with equal-precedence operators grouped within symbols. Returns the first expr if it is neither null nor otherwise returns the second expr. In the UNIX 2003 environment, returns 0 if the first expr is null or and the second expr is null. Returns the first expr if neither expr is null or otherwise returns If both arguments are integers, and if the comparison is satisfied, expr returns otherwise it returns expr returns the result of an integer comparison if both arguments are integers; other- wise returns the result of a lexical comparison (note that and are identical, in that both test for equality). Addition or subtraction of decimal integer-valued arguments. Multiplication, division or remainder of decimal integer-valued arguments producing an integer result. The matching operator compares the first argument with the second argument which must be a regular expression. expr supports the Basic Regular Expression syntax (see regexp(5)), except that all patterns are ``anchored'' (i.e., begin with and, therefore, is not a special character, in that context. Normally, the matching operator returns the number of characters matched (0 on fail- ure). Alternatively, the pattern symbols can be used to return a portion of the first argument. The length of expr. Takes the substring of the first expr, starting at the character specified by the second expr for the length given by the third expr. Returns the position in the first expr which contains a character found in the second expr. Match is a prefix operator equivalent to the infix operator Grouping symbols. Any expression can be placed within parentheses. Parentheses can be nested to a depth of as specified in the header file EXTERNAL INFLUENCES
Environment Variables determines the collating sequence used in evaluating regular expressions and the behavior of the relational operators when comparing string values. determines the interpretation of text as single- and/or multi-byte characters, and the characters matched by character class expressions in regular expressions. determines the language in which messages are displayed. If or is not specified in the environment or is set to the empty string, the value of is used as a default for each unspecified or empty variable. If is not specified or is set to the empty string, a default of "C" (see lang(5)) is used instead of If any internationalization variable contains an invalid setting, behaves as if all internationalization variables are set to "C" (see environ(5)). If is set to it enables the UNIX 2003 Standard environment. International Code Set Support Single- and multi-byte character code sets are supported. RETURN VALUE
As a side effect of expression evaluation, expr returns the following exit values: Expression is neither null nor zero. Expression is null or zero. Invalid expression. An error occurred while evaluating the expression. DIAGNOSTICS
Operator or operand errors Arithmetic attempted on a string EXAMPLES
Add 1 to the shell variable For equal to either or just return the last segment of a path name (i.e., Beware of alone as an argument because expr interprets it as the division operator (see below): A better representation of the previous example. The addition of the characters eliminates any ambiguity about the division operator and simplifies the whole expression: Return the number of characters in WARNINGS
After argument processing by the shell, expr cannot tell the difference between an operator and an operand except by the value. If is an the command: resembles: as the arguments are passed to expr (and they will all be taken as the operator). The following works: AUTHOR
was developed by OSF and HP. SEE ALSO
sh(1), test(1), environ(5), lang(5), regexp(5). STANDARDS CONFORMANCE
expr(1)
All times are GMT -4. The time now is 02:10 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy