Sponsored Content
Top Forums Shell Programming and Scripting How to find all the multi line pattern and redirecting it to a file? Post 302994010 by rbatte1 on Friday 17th of March 2017 11:40:15 AM
Old 03-17-2017
I would suggest using csplit instead. It allows you to split a file based on a condition.

Make sure that the target directory for the files is empty before you start to make working through them/cleaning up easier later.


Does this help?
Robin
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

find pattern delete line with pattern and line above and line below

I have a file that will sometimes contain a pattern. The pattern is this: W/D FRM CHK 00 I want to find any lines with this pattern, delete those lines, and also delete the line above and the line below. (1 Reply)
Discussion started by: nickg
1 Replies

2. Shell Programming and Scripting

sed: Find start of pattern and extract text to end of line, including the pattern

This is my first post, please be nice. I have tried to google and read different tutorials. The task at hand is: Input file input.txt (example) abc123defhij-E-1234jslo 456ujs-W-abXjklp From this file the task is to grep the -E- and -W- strings that are unique and write a new file... (5 Replies)
Discussion started by: TestTomas
5 Replies

3. Shell Programming and Scripting

multi line multirecord find and replace

Hello I am looking to have a script that performs some tasks for find and replace and inserts a line as well. I have done some programming 10 years ago, so it is causing me a little grief. File consists of 2500 records. I will show you a sample consisting of two records below and what needs... (3 Replies)
Discussion started by: cdc01
3 Replies

4. Shell Programming and Scripting

Find the position of a pattern on a line from a csv file

hello I'm doing a unix program and i'm using many file csv.in each csv file the colums are separated by ";" I would like to know the position of a pattern. For example for a line yyyy, bbbb, cccc; ddddd;eeee. I will like for example by finding the position of the pattern "cccc" and the response is... (6 Replies)
Discussion started by: papis
6 Replies

5. Shell Programming and Scripting

Print between multi line pattern

Hi, I have a file with text like this .SET WIDTH 10000 .SET MAXERROR 1 insert into new_db SELECT * FROM some_db ; +---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+- .SET WIDTH 10000... (3 Replies)
Discussion started by: sol_nov
3 Replies

6. UNIX for Dummies Questions & Answers

find/xargs/*grep: find multi-line empty "try-catch" blocks - eg, missing ; not in a commented block

How can I recursively find all files in a directory and print out the file and first line number of any text blocks that match the below cases? This would seem to involve find, xargs, *grep, regex, etc. In summary, I want to find so-called empty "try-catch blocks" that do not contain code... (0 Replies)
Discussion started by: lifechamp
0 Replies

7. Shell Programming and Scripting

Multi-line filtering based on multi-line pattern in a file

I have a file with data records separated by multiple equals signs, as below. ========== RECORD 1 ========== RECORD 2 DATA LINE ========== RECORD 3 ========== RECORD 4 DATA LINE ========== RECORD 5 DATA LINE ========== I need to filter out all data from this file where the... (2 Replies)
Discussion started by: Finja
2 Replies

8. UNIX for Dummies Questions & Answers

Find next line based on pattern, if it is similar pattern skip it

Hi, I am able to get next line if it is matching a particular pattern. But i need a way to skip if next line also matches same pattern.. For example: No Records No Records Records found got it Records found Now i want to find 'Records found' after 'No Records' pattern matches.. ... (5 Replies)
Discussion started by: nagpa531
5 Replies

9. Shell Programming and Scripting

sed multiple multi line blocks of text containing pattern

Hi, I have a log file which has sessionids in it, each block in the log starts with a date entry, a block may be a single line or multiple lines. I need to sed (or awk) out the lines/blocks with that start with a date and include the session id. The files are large at several Gb. My... (3 Replies)
Discussion started by: andyatit
3 Replies

10. Shell Programming and Scripting

Replacing lines matching a multi-line pattern (sed/perl/awk)

Dear Unix Forums, I am hoping you can help me with a pattern matching problem. What am I trying to do? I want to replace multiple lines of a text file (that match a multi-line pattern) with a single line of text. These patterns can span several lines and do not always have the same number of... (10 Replies)
Discussion started by: thefang
10 Replies
csplit(1)						      General Commands Manual							 csplit(1)

NAME
csplit - Splits files by context SYNOPSIS
csplit [-f prefix] [-ks] [-nnumber] file | - arg1...argn The csplit command reads the specified file (or standard input) and separates it into segments defined by the specified arguments. The csplit command optionally prints the sizes, in bytes, of each file created. STANDARDS
Interfaces documented on this reference page conform to industry standards as follows: csplit: XCU5.0 Refer to the standards(5) reference page for more information about industry standards and associated tags. OPTIONS
Specifies the prefix name (xx by default) for the created file segments. Leaves previously created file segments intact in the event of an error. By default, created files are removed if an error occurs. Uses number decimal digits to form file names for the file pieces. The default is 2. Suppresses the display of file size messages. OPERANDS
Specifies the text file to be split. If you specify - in place of the input file name, csplit reads from standard input. The operands arg1...argn can be a combination of the following: Creates a file using the contents of the lines from the current line up to, but not including, the line that results from the evaluation of the regular expression with an offset, if included. The offset argument can be any integer (positive or negative) that represents a number of lines. A plus or minus sign is required. Has the same effect as /pattern/, except that no segment file is created. Moves forward or backward the specified number of lines from the line matched by an immediately preceding pattern argument (for example, /Page/-5). Creates a file containing the segment from the current line up to, but not including, line_number, which becomes the current line. Repeats the preceding argument the specified number of times. This number can follow any of the pattern or line_number arguments. If it follows a pattern argument, csplit reuses that pattern the specified number of times. If it follows a line_number argument, csplit splits the file from that point every line_number of lines for number times. DESCRIPTION
By default, csplit writes the file segments to files named xx00 ...xxn, where n is the number of arguments listed on the command line (n may not be greater than 99). These new files get the following pieces of file: From the start of file up to, but not including, the line referenced by the first argument. From the line referenced by the first argument up to the line referenced by the second argument. From the line referenced by the last argument to the end of file. The csplit command does not alter the original file, unless a generated file overwrites the original file. Quote all pattern arguments that contain spaces or other characters special to the shell. Patterns may not contain embedded newline char- acters. [Tru64 UNIX] See the grep(1) reference page for information about creating patterns. In an expression such as [a-z], the dash means "through" according to the current collating sequence. The collating sequence is determined by the value of the LC_COLLATE environment variable. Unless the -s option is specified, csplit writes one line, containing the file size in bytes, for each file created to standard output. EXIT STATUS
The following exit values are returned: Successful completion. An error occurred. Unless the -k option is used, any files created before the error was detected will be removed. EXAMPLES
To split the text of a book into a separate file for each chapter, enter: csplit book "/^Chapter *[0-9]/" {9} This creates files named xx00, xx01, xx02,...,xx09, which contain individual chapters of the file book. Each chapter begins with a line that contains only the word Chapter and the chapter number. The file xx00 contains the front matter that comes before the first chapter. The {9} after the pattern causes csplit to create up to 9 individual chapters; the remainder are placed in xx10. To specify the prefix for the created file names, enter: csplit -f chap book "/^Chapter *[0-9]/" {9} This splits book into files named chap00, chap01,...chap9, chap10. ENVIRONMENT VARIABLES
The following environment variables affect the execution of csplit: Provides a default value for the internationalization variables that are unset or null. If LANG is unset or null, the corresponding value from the default locale is used. If any of the internationalization variables contain an invalid setting, the utility behaves as if none of the variables had been defined. If set to a non-empty string value, overrides the values of all the other internationalization variables. Determines the locale for the behavior of ranges, equivalence classes, and multicharacter collating elements within regular expressions. Determines the locale for the interpretation of sequences of bytes of text data as characters (for example, single-byte as opposed to multibyte characters in arguments and input files) and the behav- ior of character classes within regular expressions. Determines the locale for the format and contents of diagnostic messages written to standard error. Determines the location of message catalogues for the processing of LC_MESSAGES. SEE ALSO
Commands: ed(1), grep(1), sed(1), sh(1b), sh(1p), split(1) Files: regexp(3) Standards: standards(5) csplit(1)
All times are GMT -4. The time now is 11:33 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy