Sponsored Content
Full Discussion: Using Grep in a Shell Script
Top Forums Shell Programming and Scripting Using Grep in a Shell Script Post 66608 by zazzybob on Wednesday 16th of March 2005 07:51:37 AM
Old 03-16-2005
So each file has a consistent number of lines, right?

The following (g)awk program will do the trick. Just set the modulus to whatever you need (i.e. if the filenames appear every 5 lines change the modulus to $0 % 5). Save this as whatever.awk and make executable, then invoke with
$ ./whatever.awk input_file
Code:
#!/usr/bin/gawk -f

BEGIN { FS="\n" }

{ if ( $0 % 4 == 0 ) {
  filename = $0
} else {
  print $0 >> filename
} }


Here's a way of doing it using bash
Code:
#!/bin/bash

current_line=0
# file_length is the number of lines in each "file"
# excluding the n.txt lines....
file_length=3

while read line; do
  if [ $(( current_line % ( file_length + 1 ) )) -eq "0" ]; then
     filename="$line"
  else
     echo "$line" >> $filename
  fi
  (( current_line = current_line + 1 ))
done < input_file

Cheers
ZB
 

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
head(1) 							   User Commands							   head(1)

NAME
head - display first few lines of files SYNOPSIS
/usr/bin/head /usr/bin/head [-number | -n number] [filename]... ksh93 head [-qv] [-n lines] [-c chars] [-s skip][filename]... DESCRIPTION
/usr/bin/head The head utility copies the first number of lines of each filename to the standard output. If no filename is given, head copies lines from the standard input. The default value of number is 10 lines. When more than one file is specified, the start of each file looks like: ==> filename <== Thus, a common way to display a set of short files, identifying each one, is: example% head -9999 filename1 filename2 ... ksh93 The head built-in in ksh93 is associated with the /bin and /usr/bin paths. It is invoked when head is executed without a pathname prefix and the pathname search finds a /bin/head or /usr/bin/head executable. head copies one or more input files to standard output, stopping at a designated point for each file or to the end of the file whichever comes first. Copying ends at the point indicated by the options. By default, a header of the form ==> filename <== is output before all but the first file but this can be changed with the -q and -v options. If no file is given, or if the file is -, head copies from standard input starting at the current location. The option argument for -c and -s can optionally be followed by one of the following characters to specify a different unit other than a single byte: b 512 bytes k 1-kilobyte m 1-megabyte For backwards compatibility, -number is equivalent to -n number. OPTIONS
/usr/bin/head The following options are supported by /usr/bin/head: -n number The first number lines of each input file is copied to standard output. The number option-argument must be a positive decimal integer. -number The number argument is a positive decimal integer with the same effect as the -n number option. If no options are specified, head acts as if -n 10 had been specified. ksh93 The following options are supported by the head built-in command in ksh93: -n Copy lines from each file. The default value is 10. --lines=lines -c Copy chars bytes from each file. --bytes=chars -q Never output filename headers. --quiet|silent -s Skip skip characters or lines from each file before copying. --skip=skip -v Always output filename headers. --verbose OPERANDS
The following operand is supported: filename A path name of an input file. If no file operands are specified, the standard input is used. USAGE
See largefile(5) for the description of the behavior of head when encountering files greater than or equal to 2 Gbyte ( 2^31 bytes). EXAMPLES
Example 1 Writing the First Ten Lines of All Files The following example writes the first ten lines of all files, except those with a leading period, in the directory: example% head * ENVIRONMENT VARIABLES
See environ(5) for descriptions of the following environment variables that affect the execution of head: LANG, LC_ALL, LC_CTYPE, LC_MES- SAGES, and NLSPATH. EXIT STATUS
The following exit values are returned: 0 Successful completion. >0 An error occurred. ATTRIBUTES
See attributes(5) for descriptions of the following attributes: /usr/bin/head +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +-----------------------------+-----------------------------+ |Availability |SUNWcsu | +-----------------------------+-----------------------------+ |CSI |Enabled | +-----------------------------+-----------------------------+ |Interface Stability |Committed | +-----------------------------+-----------------------------+ |Standard |See standards(5). | +-----------------------------+-----------------------------+ ksh93 +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +-----------------------------+-----------------------------+ |Availability |SUNWcsu | +-----------------------------+-----------------------------+ |Interface Stability |See below. | +-----------------------------+-----------------------------+ The ksh93 built-in binding to /bin and /usr/bin is Volatile. The built-in interfaces are Uncommitted. SEE ALSO
cat(1), ksh93(1), more(1), pg(1), tail(1), attributes(5), environ(5), largefile(5), standards(5) SunOS 5.11 2 Nov 2007 head(1)
All times are GMT -4. The time now is 07:39 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy