Sponsored Content
Top Forums Shell Programming and Scripting Grep multiple keywords from a file Post 302997418 by drl on Friday 12th of May 2017 09:38:32 PM
Old 05-12-2017
Hi.

Here are a few alternatives; One is the use of shell expressions, the other is a relative of grep, agrep:
Code:
#!/usr/bin/env ksh
#!/usr/bin/env bash
#!/usr/bin/env zsh

# @(#) s1       Demonstrate match multiple strings AND and OR, agrep, shell.

# Utility functions: print-as-echo, print-line-with-visual-space.
LC_ALL=C ; LANG=C ; export LC_ALL LANG
pe() { for _i;do printf "%s" "$_i";done; printf "\n"; }
pl() { pe;pe "-----" ;pe "$*"; }
em() { pe "$*" >&2 ; }
db() { ( printf " db, ";for _i;do printf "%s" "$_i";done;printf "\n" ) >&2 ; }
db() { : ; }
C=$HOME/bin/context && [ -f $C ] && . $C dixf agrep

FILE=${1-data1}
pl " Data file $FILE:"
cat $FILE

pl " With agrep, \"and\":a b c :"
agrep "a;b;c" $FILE

pl " With agrep, \"or\":a b c :"
agrep "a,b,c" $FILE

# A pattern-list is a list of one or more patterns
# separated from each other with a & or |. A & signifies
# that all patterns must be matched whereas | requires
# that only one pattern be matched. 

# shopt -s extglob
# shopt extglob

pl " With shell expressions, \"and\", a b c ksh (bash, zsh fail):"
while read line
do
  if [[ $line == @(*a*&*b*&*c*) ]]
  then
    pe "Matched line: $line"
  fi
done < $FILE

pl " With shell expressions, \"or\", a b c ksh (zsh fail):"
while read line
do
  if [[ $line == @(*a*|*b*|*c*) ]]
  then
    pe "Matched line: $line"
  fi
done < $FILE

pl " Some detail about agrep:"
dixf agrep

exit $?

producing:
Code:
$ ./s1

Environment: LC_ALL = C, LANG = C
(Versions displayed with local utility "version")
OS, ker|rel, machine: Linux, 3.16.0-4-amd64, x86_64
Distribution        : Debian 8.7 (jessie) 
ksh 93u+
dixf (local) 1.42
agrep - ( /usr/bin/agrep, 2012-04-12 )

-----
 Data file data1:
also
abracadabra
chock full of beans
hello, world.
silent

-----
 With agrep, "and":a b c :
abracadabra
chock full of beans

-----
 With agrep, "or":a b c :
also
abracadabra
chock full of beans

-----
 With shell expressions, "and", a b c ksh (bash, zsh fail):
Matched line: abracadabra
Matched line: chock full of beans

-----
 With shell expressions, "or", a b c ksh (zsh fail):
Matched line: also
Matched line: abracadabra
Matched line: chock full of beans

-----
 Some detail about agrep:
agrep   search a file for a string or regular expression, with... (man)
Path    : /usr/bin/agrep
Version : - ( /usr/bin/agrep, 2012-04-12 )
Type    : ELF 64-bit LSB shared object, x86-64, version 1 (S ...)
Help    : probably available with -h
Repo    : Debian 8.7 (jessie)

The agrep will be much faster for files of more than trivial size.

Best wishes ... cheers, drl
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Search a file with keywords

Hi All I have a file of format asdf asf first sec endi asdk rt 123 ferf dfg ijglkp (7 Replies)
Discussion started by: mailabdulbari
7 Replies

2. UNIX for Dummies Questions & Answers

grep command to find multiple strings in multiple lines in a file.

I want to search files (basically .cc files) in /xx folder and subfolders. Those files (*.cc files) must contain #include "header.h" AND x() function. I am writing it another way to make it clear, I wanna list of *.cc files that have 'header.h' & 'x()'. They must have two strings, header.h... (2 Replies)
Discussion started by: ritikaSharma
2 Replies

3. Shell Programming and Scripting

searching keywords in file

hey guys, Hey all, I'm doing a project currently and want to index words in a webpage. So there would be a file with webpage content and a file with list of words, I want an output file with true and false that would show which word exists in the webpage. example: Webpage content... (2 Replies)
Discussion started by: Johanni
2 Replies

4. UNIX for Dummies Questions & Answers

finding keywords in many files using grep

Hi to all Sorry for the confusion because I did not explain the task clearly. There are many .hhr files in a folder There are so many lines in these .hhr files but I want only the following 2 lines to be transferred to the output file. The keyword No 1 and all the words in the next line They... (5 Replies)
Discussion started by: raghulrajan
5 Replies

5. Shell Programming and Scripting

Grep Keywords one by one

Hi I am trying to determine number of lines having a specific keyword. So for that I am using below query: grep -i 'keyword1' filename|wc -l This give me number of lines. Perfect for me. However now the requirement is I have multiple keywords together... and I have to find number of... (3 Replies)
Discussion started by: dashing201
3 Replies

6. Shell Programming and Scripting

Grep and replace multiple strings in a file with multiple filenames in a file

Hi, I have a file containing list of strings like i: Pink Yellow Green and I have file having list of file names in a directory j : a b c d Where j contains of a ,b,c,d are as follows a: Pink (3 Replies)
Discussion started by: madabhg
3 Replies

7. Shell Programming and Scripting

Grep from multiple patterns multiple file multiple output

Hi, I want to grep multiple patterns from multiple files and save to multiple outputs. As of now its outputting all to the same file when I use this command. Input : 108 files to check for 390 patterns to check for. output I need to 108 files with the searched patterns. Xargs -I {} grep... (3 Replies)
Discussion started by: Diya123
3 Replies

8. Shell Programming and Scripting

How to grep keywords?

I have below text file only with one line: vi test.txt This is the first test from a1.loa1 a1v1, b2.lob2, "c3.loc3" c3b1, loc4 but not from mot3 and second test from a5.loa5 Below should be the output that i want: a1.loa1 b2.lob2 c3.loc3 loc4 a5.loa5 alv1 and c3b1 should be... (3 Replies)
Discussion started by: khchong
3 Replies

9. UNIX for Dummies Questions & Answers

Find keywords in multiple log files

The Problem that I am having is when the code ran and populated the progflag.csv file, columns MEMSIZE, SECOND and SASEXE were blank. The next problems are the IF else statement isn't working and the email function isn't sending the progflag.csv attachment. a. What I want the program to do is to... (2 Replies)
Discussion started by: dellanicholson
2 Replies

10. Shell Programming and Scripting

Find keywords in multiple log files

I have several problems with my program: I hope you can help me. 1) the If else statement isn't working . The IF Else syntax is: If MEMSIZE OR sasfoundation (SASEXE) OR Real Time(second) >1.0 and Filename, output column name and value to csv or else nothing Example progflag,cvs:... (13 Replies)
Discussion started by: dellanicholson
13 Replies
SCANLOGS(8)						      System Manager's Manual						       SCANLOGS(8)

NAME
       scanlogs - summarize INN log files.

SYNOPSIS
       scanlogs [ norotate ] [ nonn ]

DESCRIPTION
       Scanlogs  summarizes  the information recorded in the INN log files (see newslog(5)).  By default, it also rotates and cleans out the logs.
       It is normally invoked by the news.daily(8) script.

KEYWORDS
       The following keywords are accepted:

       norotate
	      Using this keyword disables the rotating and cleaning aspect of the log processing: the logs files are only scanned for  information
	      and no contents are altered.

       nonn   Normally the nn log file is scanned and rotated.	Using this keyword disables this function.

       If scanlogs is invoked more than once a day, the ``norotate'' keyword should be used to prevent premature log cleaning.

HISTORY
       Written by Landon Curt Noll <chongo@toad.com> and Rich $alz <rsalz@uunet.uu.net> for InterNetNews.  This is revision 1.1, dated 1996/10/29.

SEE ALSO
       innd(8) newslog(5), news.daily(8), nnrpd(8).

																       SCANLOGS(8)
All times are GMT -4. The time now is 04:41 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy