Sponsored Content
Top Forums Shell Programming and Scripting Selecting text on multiple lines, then removing a beginning and end patterns Post 303043860 by MadeInGermany on Sunday 9th of February 2020 04:39:14 AM
Old 02-09-2020
You can boost your sed attempt
Code:
sed '
  /@inlineifset/,/^ *$/!d
  /@inlineifset{mrg, @btpar{@/{
# Delete the previous search pattern
    s///
    :Loop
# Delete the end pattern; on success go to the end (next cycle)
    s/,,*}}//; t
# Emergency exit
    $b
# Append the next input line; go to :Loop
    N; bLoop
  }
' $flnm >> $ofln

Edit: this does not work!
My mistake: the success status of the s/// is not changed by the following unsuccessful s/,,*}}// so the t command always branches to the end (next cycle).
Here is a fix:
Code:
sed '
  /@inlineifset/,/^ *$/!d
  /@inlineifset{mrg, @btpar{@/{
# Delete the previous search pattern
    s///
    :Loop
    /,,*}}/{
# Delete the previous search pattern; go to the end (next cycle)
      s///; b
    }
# Emergency exit
    $b
# Append the next input line; go to :Loop
    N; bLoop
  }
' $flnm >> $ofln


Last edited by MadeInGermany; 02-10-2020 at 07:54 AM.. Reason: Mistake
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Removing end of line to merge multiple lines

I'm sure this will be an easy question for you experts out there, but I have been searching the forum and working on this for a couple hours now and can't get it right. I have a very messy data file that I am trying to tidy up - one of the issues is some records are split into multiple lines: ... (4 Replies)
Discussion started by: tink
4 Replies

2. UNIX for Dummies Questions & Answers

removing multiple lines of text in a file

Hi, I'm trying to remove multiple lines of text based off a series of different words and output it to a new file The document contains a ton of data but i want to delete any line that has the following mx1.rr.biz.com or ns2.ri.biz.com i tried using grep -v filename "mx1.rr.biz.com" >... (3 Replies)
Discussion started by: spartan22
3 Replies

3. Shell Programming and Scripting

Removing file lines that each match to a different patterns

I have a very large file (10,000,000 lines), that contains a sample id and a property of that sample. I have another file that contains around 1,000,000 lines with sample ids that I want to remove from the original file (create a new file without these lines). I know how to do this in Perl, but it... (9 Replies)
Discussion started by: Jo_puzzled
9 Replies

4. UNIX for Dummies Questions & Answers

Removing trailing lines at the end of a text file

How do you remove trailing empty lines at the end of a text file? Thanks! (3 Replies)
Discussion started by: evelibertine
3 Replies

5. Shell Programming and Scripting

trying to add text to beginning and end of each line

Well here goes: I tried to write a batch file that adds a specific fixed text to each line of an already existing text file. for the adding text infront of each line I tried this: for /F "delims=" %%j in (list.txt) do echo.STARTTEXT\%%j >> list.txt for adding text after each line I... (0 Replies)
Discussion started by: pasc
0 Replies

6. Shell Programming and Scripting

Removing hyphen from beginning and end of a word only.

It is very simple to remove a hyphen from a word anywhere in that word using a simple sed command (sed -i 's/-//g' filename), but I am not able to figure out how to do this: For example, apple -orange tree pipe- banana-shake dupe- What my output should look like: apple orange tree... (1 Reply)
Discussion started by: shoaibjameel123
1 Replies

7. Shell Programming and Scripting

Add words in beginning , end after removing a word in a file

My file has the entries like below... /dev/sds /dev/sdak /dev/sdbc /dev/sdbu I want to make the file like below echo 1 > /sys/block/sds/device/rescan echo 1 > /sys/block/sdak/device/rescan echo 1 > /sys/block/sdbc/device/rescan echo 1 > /sys/block/sdbu/device/rescan (2 Replies)
Discussion started by: saravanapandi
2 Replies

8. Shell Programming and Scripting

Replacing entire fields with specific text at end or beginning of field

Greetings. I've got a csv file with data along these lines: Spumoni's Pizza Place, Placemats n Things, Just Lamps Counterfeit Dollars by Vinnie, Just Shades, Dollar StoreI want to replace the entire comma-delimited field if it matches something ending in "Place" or beginning with "Dollar",... (2 Replies)
Discussion started by: palmfrond
2 Replies

9. UNIX for Beginners Questions & Answers

Removing characters from beginning of multiple files

Hi, I have been searching how to do this but I can't seem to find how to do it. Hopefully someone can help. I have multiplr files, 100's example 12345-zxys.213423.zyz.txt. I want to be able to take all these files and remove the first '12345-' from each of the files. '12345-' these characters... (5 Replies)
Discussion started by: israr75
5 Replies

10. UNIX for Beginners Questions & Answers

How to print lines from a files with specific start and end patterns and pick only the last lines?

Hi, I need to print lines which are matching with start pattern "SELECT" and END PATTERN ";" and only select the last "select" statement including the ";" . I have attached sample input file and the desired input should be as: INPUT FORMAT: SELECT ABCD, DEFGH, DFGHJ, JKLMN, AXCVB,... (5 Replies)
Discussion started by: nani2019
5 Replies
ELVFMT(1)							   User commands							 ELVFMT(1)

NAME
elvfmt - adjust line-length for paragraphs of text SYNOPSIS
elvfmt [-w width | -width] [-s] [-c] [-i chars] [-C] [-M] [file]... VERSION
This page describes the Elvis 2.2_0 version of elvfmt. See elvis(1). DESCRIPTION
elvfmt is a simple text formatter. It inserts or deletes newlines, as necessary, to make all lines in a paragraph be approximately the same width. It preserves indentation and word spacing. If you don't name any files on the command line, then elvfmt will read from stdin. It is typically used from within vi(1) or elvis(1) to adjust the line breaks in a single paragraph. To do this, move the cursor to the top of the paragraph, type "!}elvfmt", and hit <Return>. OPTIONS
-w width or -width Use a line width of width characters instead of the default of 72 characters. -s Don't join lines shorter than the line width to fill paragraphs. -c Try to be smarter about crown margins. Specifically, this tells elvfmt to expect the first line of each paragraph to have a differ- ent indentation than subsequent lines. If text from the first input line is wrapped onto the second output line, then elvfmt will scan ahead to figure out what indentation it should use for the second output line, instead of reusing the first line's indentation. -i chars Allow the indentation text to include any character from chars, in addition to spaces and tabs. You should quote the chars list to protect it from the shell. -C and -M These are shortcuts for combinations of other flags. is short for and is useful for reformatting C/C++ comments. is short for and is useful for reformatting email messages. SEE ALSO
vi(1), elvis(1) AUTHOR
Steve Kirkendall kirkenda@cs.pdx.edu ELVFMT(1)
All times are GMT -4. The time now is 06:35 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy