Visit Our UNIX and Linux User Community


perl: conditionaly remove space


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting perl: conditionaly remove space
# 1  
Old 10-14-2009
perl: conditionaly remove space

I want to remove all space NOT starting with http, the following works, but not elegant, is there better way?

Code:
$echo " a http  b" | perl -lne 's/\shttp/#http/g; s/\s+//g;  s/#http/ http/g; print $_;'
a httpb

# 2  
Old 10-15-2009
Not able to understand exactly, but this may be the thing you want..

Code:
echo "a http b" | perl -lne 's/(http)\s+/$1/g; print'

# 3  
Old 10-15-2009
The shortest I could get.
Code:
$ echo " a http  b" | perl -ple 's/\s(?!http)//g'
a httpb

# 4  
Old 10-15-2009
Quote:
Originally Posted by pludi
The shortest I could get.
Code:
$ echo " a http  b" | perl -ple 's/\s(?!http)//g'
a httpb

great that is what I need delete all space except those before http.

Can you explain the usage of "?!", I googled but still couldn't understand it.


Got it:
http://www.perl.com/doc/manual/html/pod/perlre.html
Quote:
(?!pattern)

A zero-width negative lookahead assertion. For example /foo(?!bar)/ matches any occurrence of ``foo'' that isn't followed by ``bar''. Note however that lookahead and lookbehind are NOT the same thing. You cannot use this for lookbehind.
If you are looking for a ``bar'' that isn't preceded by a ``foo'', /(?!foo)bar/ will not do what you want. That's because the (?!foo) is just saying that the next thing cannot be ``foo''--and it's not, it's a ``bar'', so ``foobar'' will match. You would have to do something like /(?!foo)...bar/ for that. We say ``like'' because there's the case of your ``bar'' not having three characters before it. You could cover that this way: /(?:(?!foo)...|^.{0,2})bar/. Sometimes it's still easier just to say:


if (/bar/ && $` !~ /foo$/)

For lookbehind see below.

Last edited by pludi; 10-16-2009 at 02:26 AM..
# 5  
Old 10-16-2009
Congratulations on finding the answer. Zero-width assertions are a very valuable tool sometimes. Sadly, they're only available in Perl (except if someone can correct me on that).

Previous Thread | Next Thread
Test Your Knowledge in Computers #27
Difficulty: Medium
Linux was the first fully supported 64-bit operating system for consumers.
True or False?

10 More Discussions You Might Find Interesting

1. Programming

Python 3 remove the space after the last /

using python 3 when i run this code to get the urls i get a space in the url how do i remove the space after the last / thanks # Import libraries import requests from bs4 import BeautifulSoup # Connect to the URL page = requests.get('https://www.meihoski.co.jp/movie/') soup... (3 Replies)
Discussion started by: bob123
3 Replies

2. UNIX for Beginners Questions & Answers

Remove space with sed

Hello Folks , myfile contains 1000000 records as follows: logver=56 idseq=63256 itime=1111 devid=TG-40 devname=PUI-C2 vd=USER date=2019_01_10 time=18:39:49 logid="000013" type="traffic" subtype="forward" level="notice" eventtime=134 srcip=1.1.1.1 srcport=1 srcintf="XYX-CORE.01"... (3 Replies)
Discussion started by: arm
3 Replies

3. UNIX for Advanced & Expert Users

Need to remove leading space from awk statement space from calculation

I created a awk state to calculate the number of success however when the query runs it has a leading zero. Any ideas on how to remove the leading zero from the calculation? Here is my query: cat myfile.log | grep | awk '{print $2,$3,$7,$11,$15,$19,$23,$27,$31,$35($19/$15*100)}' 02:00:00... (1 Reply)
Discussion started by: bizomb
1 Replies

4. Shell Programming and Scripting

Remove trailing space

Hi I am trying to remove trailing space from a string. value=${value%% } It is not working. What might be the issue with the above snippet. (7 Replies)
Discussion started by: munna_dude
7 Replies

5. Shell Programming and Scripting

remove space

File A.txt A005 -119.5 -119.5 -100.5 A006 -120.5 -119.5 -119.3 A008 0 0 0 Output A005 -119.5 -119.5 -100.5 A006 -120.5 ... (1 Reply)
Discussion started by: asavaliya
1 Replies

6. Shell Programming and Scripting

remove space of each line

Hi Guys, I want remove starting space of each line ... My Input: A B C D E C V F G H F R T Y U D F G H J L O I U Y G P O K O P L O L O I P P O P P P P P My Output: A B C D E C V F G H (7 Replies)
Discussion started by: asavaliya
7 Replies

7. Shell Programming and Scripting

Remove space before a character

Hi guys, I am new to shell scripting and I have a small problem...If someone can solve this..that would be great I am trying to form a XML by reading a flat file using shell scripting This is my shell script LINE_FILE1=`cat FLEX_FILE1.TXT | head -1 | tail -1` echo... (1 Reply)
Discussion started by: gowrishankar05
1 Replies

8. Shell Programming and Scripting

Remove space in whole file -perl

Hi all, I have a file which have say about 123,000 records, the records in it look like: 1294160401681,05-01-2011 00:00:01,68,Cjw,2,3333,7,1100,900,SUCCESS,200,68,localhost, 1294160406515,05-01-2011 00:00:06,68,Cjw,2,0207,7,1100,900,SUCCESS,200,68,localhost, 1294160410097,05-01-2011... (3 Replies)
Discussion started by: danihamdani
3 Replies

9. Shell Programming and Scripting

Remove last space in a string?

I have a customer file now and would like to separate the names into two cells in a spreadsheet. Here is my data as an example: SHAWN R KEEGAN shawn r scroggin Shawn Regan Shawn Reilly The first two have the middle initial so I'd like to include them in the "first name" field and the last... (11 Replies)
Discussion started by: Grassy
11 Replies

10. Shell Programming and Scripting

Remove space

DATE=6/Jul/2010 6/Jul/2010 var="sed -n '/\ ---------- Post updated at 11:49 AM ---------- Previous update was at 11:36 AM ---------- #!/bin/bash DATE=`./get_date.pl 3` DATE1=`./get_date.pl 2` var1=$( echo "$DATE" | sed "s/ //g" ) var2=$( echo "$DATE1" | sed "s/ //g" ) var="sed -n... (1 Reply)
Discussion started by: sandy1028
1 Replies

Featured Tech Videos