Sponsored Content
Full Discussion: How to substitute?
Top Forums Shell Programming and Scripting How to substitute? Post 302267718 by drl on Saturday 13th of December 2008 03:03:39 PM
Old 12-13-2008
Hi.

Here is a start that shows ParseWords:
Code:
#!/usr/bin/perl

# @(#) p1       Demonstrate parsing with quotes, operators AND, OR.
# http://search.cpan.org/~chorny/Text-ParseWords-3.27/ParseWords.pm

use warnings;
use strict;
use Text::ParseWords;

my ($debug);
$debug = 0;
$debug = 1;

my ( $i, $last, $line, @tokens );

while (<>) {
  chomp;
  @tokens = quotewords( '\s+', 0, $_ );
  print " input is :@tokens:\n" if $debug;
  $last = undef;
  foreach $i (@tokens) {
    if ( not defined($last) ) {
      $last = $i;
      print qin($i) . " ";
    }
    elsif ( $i eq "OR" or $i eq "AND" ) {
      $last = $i;
      print qin($i) . " ";
    }
    else {
      if ( $last ne "OR" and $last ne "AND" ) {
        print "AND " . qin($i) . " ";
      }
      else {
        print qin("$i") . " ";
      }
      $last = $i;
    }
  }
  print "\n";
}

print STDERR " ( Lines read: $. )\n" if $debug;

# qin - quote if necessary.

sub qin {
  my ($phrase) = $_[0];
  if ( $phrase =~ / / ) {
    return '"' . $phrase . '"';
  }
  else {
    return $phrase;
  }
}

exit(0);

Producing (on your data in file data1):
Code:
% ./p1 data1
 input is :apple bannana:
apple AND bannana
 input is :apple bannana AND chickko:
apple AND bannana AND chickko
 input is :milk shake OR Graphes orange:
"milk shake" OR Graphes AND orange
 ( Lines read: 3 )

See perldoc Text::ParseWords on your system or obtain from cpan as noted. It takes care of the quoted strings, placing all the tokens in a list.

If the output is not what you desire, feel free to modify or adapt the code as necessary ... cheers, drl
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Substitute in vi

I know in vi you can do :%s/replaceme/withthis/ but if i want to find all lines say without a # at the begining and I want to put it in how would that command be formatted? I can't figure it out for the life of me. #comment blah1 hey1 grrr1 #comment #blah1 #hey1 #grrr1 (5 Replies)
Discussion started by: kingdbag
5 Replies

2. UNIX for Dummies Questions & Answers

Substitute Variable

Can anyone tell me what is the purpose of a substitute variable in the unix programming language and give an example where it may be used? Thanks! (0 Replies)
Discussion started by: mmg2711
0 Replies

3. UNIX for Dummies Questions & Answers

rm substitute with blacklist

hi! first i want to apologize for two things. my English and (possible) posting in the wrong sub forum (i couldn't find one that fits my question) I am needing a script that can substitute rm. the idea is that the operator can/must delete some folders and files from time to time, when the free... (2 Replies)
Discussion started by: broli
2 Replies

4. Shell Programming and Scripting

In Help, Substitute Text ...

i'm writing a script that will extract and substitute a certain part of a data. i'm having trouble with the substituting part ... Here's my data looks like: 01/01/08-001-23:46:18-01/01/08-23:50:43 01/01/08-003-23:45:19-01/01/08-23:55:49 01/01/08-005-23:52:18-01/01/08-23:58:52 i want to... (6 Replies)
Discussion started by: solidhelix08
6 Replies

5. UNIX for Dummies Questions & Answers

substitute file name

correct file names are: *_0.txt *_1.txt incorrect file names are: *_12.txt *_0123.txt *_04321.txt all files that are incorrect need to replace the ending with *_1.txt therefore need to create a loop to find the wrong files in a dir ->that dont end in _1.txt or _0.txt and then... (3 Replies)
Discussion started by: sigh2010
3 Replies

6. Shell Programming and Scripting

vi substitute

My question is how would I substitute for ceratain number of occurences in a line? If this is my input rjohns BFSTDBS01 Standard Silver NPRO30DINCR 2 Client Is it possible to change the first 3 occurences of space " " to a comma? (7 Replies)
Discussion started by: reggiej
7 Replies

7. UNIX for Dummies Questions & Answers

substitute (')

I usually use : Code: awk '{gsub(/xxx/,"yyy");print}' to substitute xxx with yyy. I have a problem substitute an expression like Code: x ' y Because of the ( ' ) Any idea on how to get over this problem? Thanks (2 Replies)
Discussion started by: cosmologist
2 Replies

8. UNIX for Dummies Questions & Answers

Substitute in VI

Hi there, i am updating a file on UNIX and have many lines as per below : listen:x:37:4:Network Admin:/usr/net/nls: i would like to substitute from the :/usr to the end of the line. so at the moment im using this : :s/"\/$/ /g but i get an error.can anyone help? thank you (3 Replies)
Discussion started by: brian112
3 Replies

9. Shell Programming and Scripting

Grep and substitute?

I have to parse ASCII files, output the relevant data to a comma-delimited file and load it into a database table. The specs for the file format have been recently updated and one section is causing problems. This is the original layout for that section. ... (2 Replies)
Discussion started by: alan
2 Replies

10. How to Post in the The UNIX and Linux Forums

Prstat substitute

Hello All, I have a shell script where with the lines below: echo "${v_sd_dateTime},${RUN_QUEUE_SIZE},${LOAD_AVERAGE},${v_sd_load_list},${v_sd_thread_count_list}" >> ${v_sd_file} Format of the output : 01/05/2005 08:00:00, RUN_QUEUE_SIZE, LOAD_AVG, CPU_PROD1, CPU_PROD2, THREADS_PROD1,... (1 Reply)
Discussion started by: Supriya_84
1 Replies
BOGOLEXER(1)						    Bogofilter Reference Manual 					      BOGOLEXER(1)

NAME
bogolexer - Utility program for separating email messages into tokens SYNOPSIS
bogolexer [-p] [-q] [-h] [-n] [-v] [-x flags] [-c file] [-C] [-D] [-I file] [-O file] [-V] DESCRIPTION
Bogolexer is part of the bogofilter Bayesian spam filter package. It is used to separate messages into tokens and to test new versions of the lexer.l code. OPTIONS
The -p option tells bogolexer to print just the tokens read from stdin, without any extra messages. The -q option tells bogolexer to print a token count, without printing the actual tokens. The -h option prints the help message and exits. The -n option tells bogolexer to map non-ascii characters to the question point '?'. The -v option increases the verbosity level. The -x flags option allows setting of debug flags for printing debug messages. The -cfilename option tells bogolexer to read the config file named. The -C option prevents bogolexer from reading configuration files. The -D option redirects the debugging output to stdout (it defaults to stderr). The -I filename option tells bogolexer to read its input from the specified file, rather than from stdin. The -O filename option tells bogolexer to write its output to the specified file, rather than to stdout. The -V option prints the version number and exits. AUTHOR
The bogofilter developer team. For updates, see the bogofilter project page[1]. SEE ALSO
bogofilter(1), bogotune(1), bogoupgrade(1), bogoutil(1) NOTES
1. the bogofilter project page http://bogofilter.sourceforge.net/ Bogofilter 10/22/2012 BOGOLEXER(1)
All times are GMT -4. The time now is 09:25 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy