sed fails to apply substitute commands


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting sed fails to apply substitute commands
# 8  
Old 08-06-2012
okokok, I now realized I can do this with sed. The things I've got in my head:
- move the last line I'm working on into a new file
- merge sed commands with alternate swith wherever possible
- get rid of the .* and replace it with .\{,n\}, where n is a few hundred bigger number than what I want to select with the * to make the command flexible

Anyway, I curse GNU BRE for not having lazy search. With the * it took RegexBuddy to select the first of the three commands in around 54000 steps, even though I've deleted the content that's usually after the selection. So I thought I'd just replace the * with \{,n\} for less steps.
# 9  
Old 08-07-2012
Quote:
Originally Posted by Adolf1994
Anyway, I curse GNU BRE
For the third time:

Quote:
Originally Posted by Corona688
busybox is profoundly not the standard Linux GNU utilities.
Quote:
...for not having lazy search.
AFAIK only Perl can do non-greedy regex matching, and even then not by default. And it may not be terribly efficient in doing so.

I'm still not convinced you're even using the right tool for the job.
# 10  
Old 08-07-2012
Momentary sidebar ...

Quote:
Originally Posted by Corona688
AFAIK only Perl can do non-greedy regex matching, and even then not by default.
At least Python, Ruby, and PHP also support lazy quantifiers.

Regards,
Alister
# 11  
Old 08-07-2012
Well, I've looked into the grymoire sed page and decided to use groups and such tasty stuff:
Code:
    sed -e '1 s/.\{1,31\}$//' -e '2,10 d' -e '/^<meta / {
        s_<link[^>].\{1,100\}xml"/>\(<title>[^>]\+</title>\).\+_\1_
        s_//'$ST'/image/\(favicon-\?[a-z]\{0,10\}\.ico\)_'$LOC'/misc/\1_
        s_<link rel="alternate style.\+\(<link rel="apple-touch-icon" h\)_\1_
        s_//'$ST'/css/\([a-z0-9\.]\{1,25\}\.css\)_'$LOC'/misc/\1_
        }' -e '3,16 d' -e '$ {
        s_\(<div id="\)pim\([0-9]\{1,100\}\).\{1,1000\}\(\1\(pi\|f\)\2\)_\3_g
        s_//.\.thumbs\.4chan\.org/[a-z0-9]\{1,10\}/thumb/\([0-9]\{1,25\}s\.jpg\)_'$LOC'/misc/\1_g
        s_//images\.4chan\.org/[a-z0-9]\{1,10\}/src/\([0-9]\{1,25\}\.\)\(jpg\|gif\|png\)_'$LOC'/\1\2_g
        s_//'$ST'/image/title/[a-z]\{1,10\}/[a-z0-9]\{1,100\}\.\(jpg\|gif\|png\)_'$LOC'/misc/logo.\1_g
        s_//'$ST'/image/\(spoiler-\?[a-z0-9]\{0,10\}\....\)_'$LOC'/misc/\1_g
        s_//'$ST'/image/country/\(\([a-z]\{0,25\}/\)\?[a-z0-9]\{1,25\}\....\)_'$LOC'/misc/\1_g
        s_\(<a href="\)'$LOC'\(#p\{1,100\}"\)_\1\2_g
        s_<a href="#p'$LOC'" class="quotelink">&gt;&gt;'$LOC'_& (OP)_g
        s_\(<a href="[0-9]\{1,100\}\)\(#p[0-9]\{1,100\}" class="quotelink">&gt;&gt;[0-9]\{1,100\}\)_\1.html\2 (Cross-thread)_g
        s_\(</div></div></div><hr>\)<div class="mobile".\+</div><hr>\(<div class="navLinks navLinksBot">\[<a href="\)\.\./\(\./"[^>]\{0,100\}>Return</a>\] \[<a href="\)#top\(">Top</a>\]\).\+</body>_\1</form>\2\3javascript:scroll(0,0);\4<div id=bottom></div>'$S1'</body>_
        s_^\(.\{1,39\}\)<div id="boardNavDesktop" class="desktop">.\{0,7800\}\(<div class="boardBanner"\{0,250\}\)<hr class="abovePostForm"/\?>.\{0,400\}\(<div class="navLinks">.<a href="\)\.\./\(\./.\{0,100\}\)#bottom\(">Bottom</a>]\).\{0,4000\}alt=""/></a>\(</div><hr><a href="ja\)_'$S2'\1\2\3\4javascript:scroll(0,d.documentElement.scrollHeight)\5\6_
        s_href="//_href="http://_g
        }' $LOC.html > a

However, this returns unmatched _
Every regexp here is RegexBuddy verified.

Quote:
Originally Posted by Corona688
I'm still not convinced you're even using the right tool for the job.
Any other idea?
# 12  
Old 08-07-2012
Perhaps regex buddy isn't as perfect as one would want to assume...

It depends what you're trying to do. Without reverse-engineering that enormous pile of regexes, there's little for us to work from.

But awk can be used to rip apart tags based on <, letting you handle things piecemeal.
# 13  
Old 08-07-2012
This script serves the sole purpose of making threads work offline and getting rid of junk not needed there.
Anyway, is there a character that indicates the end of a command in groups?
awk is actually a language, too, right? But that again would take me a lot of time to study and I'd like to make this script working by tomorrow. There will be a quest thread that I'd like to archive.
If everything else fails, I'll just go back to use -e for every command instead of groups.
# 14  
Old 08-07-2012
if you give a sample input and a desired output - we might be able to do something - maybe one-step-at-the-time approach is in order - 'sed' seems to be over-complicated for my taste....
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Substitute a character with sed

hi all, i'd like to modify a file with sed , i want to substuite a char "-" with "/" how can i do this? Thanks for all regards Francesco (16 Replies)
Discussion started by: Francesco_IT
16 Replies

2. Shell Programming and Scripting

sed - pattern match - apply substitution

Greetings Experts, I am on AIX and in process of creating a re-startable script that connects to Oracle and executes the statements. The sample contents of the file1 is CREATE OR REPLACE VIEW DB_V.TAB1 AS SELECT * FROM DB_T.TAB1; .... CREATE OR REPLACE VIEW DB_V.TAB10 AS SELECT * FROM... (9 Replies)
Discussion started by: chill3chee
9 Replies

3. Shell Programming and Scripting

sed substitute command -- need help

I am trying to do what I thought should be a simple substitution, but I can't get it to work. File: Desire output: I thought I'd start with a sed command to remove the part of the header line preceding the string "comp", then go on to remove the suffix of the target string (e.g. ":3-509(-)"),... (3 Replies)
Discussion started by: pathunkathunk
3 Replies

4. Homework & Coursework Questions

Finding the directories with same permission and then apply some default UNIX commands

Write a Unix shell script named 'mode' that accepts two or more arguments, a file mode, a command and an optional list of parameters and performs the given command with the optional parameters on all files with that given mode. For example, mode 644 ls -l should perform the command ls -l on all... (5 Replies)
Discussion started by: femchi
5 Replies

5. Shell Programming and Scripting

Finding the directories with same permission and then apply some default UNIX commands

HI there. My teacher asked us to write a code for this question Write a Unix shell script named 'mode' that accepts two or more arguments, a file mode, a command and an optional list of parameters and performs the given command with the optional parameters on all files with that given mode. ... (1 Reply)
Discussion started by: femchi
1 Replies

6. UNIX for Dummies Questions & Answers

Using sed to substitute between quotes.

I'm using sed to perform a simply search and replace. The typical data is: <fig><image href="Graphics/BAV.gif" align="left" placement="break" I need to replace the value in the first set of quotes, keeping the remainder of the line the same. Thus: <fig><image href="NEW_VALUE" align="left"... (3 Replies)
Discussion started by: Steve_altius
3 Replies

7. Shell Programming and Scripting

Using sed to substitute first occurrence

I am trying to get rid of some ending tags but I run into some problems. Ex. How are you?</EndTag><Begin>It is fine.</Begin><New> Just about I am trying to get rid of the ending tags, starts with </ and ending with >. (which is </EndTag> and </Begin>) I tried the following sed... (2 Replies)
Discussion started by: quixoticking11
2 Replies

8. Shell Programming and Scripting

Using SED to substitute between two patterns.

Hi All, I'm currently using SED to make various changes to some .xml files I'm working on, but I'm stuck on this particular problem. I want to remove '<placeholder>element-name</placeholder>' from the following: <heading>Element <placeholder>element-name</placeholder> not... (2 Replies)
Discussion started by: Steve_altius
2 Replies

9. Solaris

patchadd fails to apply a patch

Hello, I'm trying to apply the patch on Solaris 9 : $/jac/update$ patchadd ./112945-46 Checking installed patches... One or more patch packages included in 112945-46 are not installed on this system. Patchadd is terminating. The error message is not really talkative so I had a... (7 Replies)
Discussion started by: Tex-Twil
7 Replies

10. UNIX for Dummies Questions & Answers

sed substitute situation

I am having a problem executing a sed substitute in a file. I have tried alot of different things I found in previous posts, however non seem to work. I want to substitute this in $FILE: VALUE=33.4 In the script I have tried the following: prev=$(awk -F"=" '{ print $2 }' $FILE ) new=$(echo... (16 Replies)
Discussion started by: newbreed1
16 Replies
Login or Register to Ask a Question