Sponsored Content
Full Discussion: Using Grep in a Shell Script
Top Forums Shell Programming and Scripting Using Grep in a Shell Script Post 66592 by nbvcxzdz on Wednesday 16th of March 2005 05:26:29 AM
Old 03-16-2005
Using Grep in a Shell Script

Hi everyone,

Im trying to write a Shell script that basically creates a set of files based on a file with many records. For example if a file called dummy has the following content:

a.txt
1st line of a's text file
2nd line of a's text file
3rd line of a's text file
b.txt
1st line of b's text file
2nd line of b's text file
3rd line of b's text file

After running my shell script, 2 files should be created. The first should be called a.txt and its contents should be:
1st line of a's text file
2nd line of a's text file
3rd line of a's text file

The second file created should be called b.txt and its contents should be:
1st line of b's text file
2nd line of b's text file
3rd line of b's text file

So essentialy the name of the file is followed by its content in dummy. I've attempted to write a script to do this but ive being having problems getting it to work. If someone has done this before using similar code or completely different code could you please help me out? I think i have some error in my grep line and also other minor errors. My shell script code
is as follows:

#look at one line at a time in dummy file
line_number=1
#number of lines in file, temporarliy set to 9 but should be whatever the #number of lines in the file is
LENGTH=9

while [ $line_number -le $LENGTH ]
do
$current_line=`tail +$line_number < dummy|head -n$line_number|cat`

if [ grep ".txt" $current_line ]
then
FILENAME=$current_line
else
`echo $current_line >> $FILENAME`
fi

#$line_number='exp $line_number + 1'
line_number=`expr $line_number+1`
done




thanks
nbvcxzdz
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

grep, sed in a shell script

Hi, I have a problem with a simple script I am trying to write. I want a user to type grep, sed commands that are then stored in variables. Those variables are stored in a function, and the function is then called to execute the commands. The idea is that the user does it step by step. ... (4 Replies)
Discussion started by: Trufla
4 Replies

2. Shell Programming and Scripting

grep in Shell script

Hello I do want to write a script which will check any errors say "-error" in the log file then have to send email to the concern person . And the concern person will correct the error . Next time if the script runs eventhough the error has been corrected it will ... (1 Reply)
Discussion started by: Krishnaramjis
1 Replies

3. Shell Programming and Scripting

Grep or Tail in shell script

Hi, I am writing a shell script that checks catalina logs on a production system and mails me if it detects errors. It greps the logs for known errors which i have defined as variables. The problem is the logs are huge, approx 30,000 before they rotate. So I am forced to use grep instead... (3 Replies)
Discussion started by: Moxy
3 Replies

4. Shell Programming and Scripting

Shell script grep help

Hey there, newbie question : echo "::kmastat" | /usr/bin/mdb -k | grep Total | grep "kmem_*" Total 17326080 432853 0 Total 426508288 65458 0 Total 704757760 1572001732 0 Total ... (11 Replies)
Discussion started by: shriyer
11 Replies

5. Shell Programming and Scripting

Grep command in shell script

Hi, I have written the following shell script - Error_String="error" var1="| grep -v note1 | grep -v note2" grep -i $Error_String /users/mqm/Pwork/Err/*.out $var1 The above script gives error saying "grep: can't open | grep: can't open grep grep: can't open -v" etc In my program... (3 Replies)
Discussion started by: prasannasupp
3 Replies

6. Shell Programming and Scripting

Simple Shell Script to Grep

Hi guys, I have written this script, however the outcome is invalid. It contains grep search that is not needed: Script: #!/bin/bash #this is a test script FILES=$(ls /home/student/bin/dir1/*) GREPFUNC=$(grep -E -i "login|Successfully" ORProxyTC`date '+%m%d%Y'`*.txt/ ${FILES})... (14 Replies)
Discussion started by: DallasT
14 Replies

7. Shell Programming and Scripting

How to grep sql error in shell script and exit the script?

I need help in the following script. I want to grep the sql errors insert into the error table and exit the shell script if there is any error, otherwise keep running the scripts. Here is my script #!/bin/csh -f source .orapass set user = $USER set pass = $PASS cd /opt/data/scripts echo... (2 Replies)
Discussion started by: allinshell99
2 Replies

8. Shell Programming and Scripting

Shell Script with Grep

Hi guys - below is my script that is checking for current file, size and timestamp. However I added a "grep" feature in it (line in red), but not getting the desired result. I am trying to acheive in output: 1. Show me the file name, timestamp, size and grep'ed words It would be a... (2 Replies)
Discussion started by: DallasT
2 Replies

9. Shell Programming and Scripting

Grep in Shell script

hi guys very new to this game so excuse my ignorance. I need to create a script that simply greps for a text string and then outputs a message depending on whether the text string is there or not. The script I have setup is below, but whenever I run it I get the following error: ... (5 Replies)
Discussion started by: ap2112
5 Replies

10. Shell Programming and Scripting

Speeding up shell script with grep

HI Guys hoping some one can help I have two files on both containing uk phone numbers master is a file which has been collated over a few years ad currently contains around 4 million numbers new is a file which also contains 4 million number i need to split new nto two separate files... (4 Replies)
Discussion started by: dunryc
4 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 10:34 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy