Sponsored Content
Top Forums Shell Programming and Scripting AWK Script and Commandline difference Post 302534988 by MrSnail on Wednesday 29th of June 2011 10:08:24 AM
Old 06-29-2011
AWK Script and Commandline difference

Hey there,

I just stumbled upon a difference between using awk on the commandline and using it in a shellscript.

I have a variable, e.g.: PROG=vim
then i want to check if the package with this name is installed: TEMPVAL=$(dpkg -l | awk '{ if ($2 == "$PROG") print $2 }') (Im using Tempval later in an condition to check if it is installed)
Running this on the commandline works fine. In the shellscript TEMPVAL is always empty.

btw "toinstall" just contains some package names to be installed and comments prefixed with #

full script:
Code:
#!/bin/bash

for prog in `cat toinstall | grep -vP "^#" | grep -vP "^$"`
do
    TEMPVAL=$(`dpkg -l | awk '{ if ($2 == "${prog}") print $2}'`)
    if [  "$TEMPVAL" == "" ]
    then
    sudo apt-get install -y $prog
    fi
done

bash -x output:
Code:
+ for prog in '`cat toinstall | grep -vP "^#" | grep -vP "^$"`'
+++ dpkg -l
+++ awk '{ if ($2 == "${prog}") print $2}'
+ TEMPVAL=
+ '[' '' == '' ']'
+ sudo apt-get install -y vim

Whats the Problem?Smilie I already tried playing with the quotation, but nothing worked. Hope somebody can help me. I'd also appreciate hints or tips if theres a more convenient way of doing what i want to do Smilie

Greetings, MrSnail
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

script to go to a different dir to run a commandline prompt in that dir

Hi, I need to know how I'll be able to write a script that can goto a different dir where I don't have access to read,write and execute and also to run a commandline prompt in that dir with one file whose path has to be specified in that command. Will I be able to do this? Any ideas or... (2 Replies)
Discussion started by: ann_124
2 Replies

2. Shell Programming and Scripting

How to determine if a script (perl) was called from a CRON job or commandline

Hi, Is there a way to determine if a Script is called from a CRON job or from a commandline Gerry. (2 Replies)
Discussion started by: jerryMcguire
2 Replies

3. Shell Programming and Scripting

Handling values with space while passing commandline argument from wrapper script in KSH

Hi there, I have a wapper script which passes the argument from command prompt to inner script.. It works fine as long as the argument containing single word. But when value contains multiple word with space, not working as expected. I tried my best, couldn't find the reason. Gurus, pls.... (2 Replies)
Discussion started by: kans
2 Replies

4. Shell Programming and Scripting

How to print and append output of nawk script in commandline and as well into a file?

Hi All, I am working on nawk script, has the small function which prints the output on the screen.Am trying to print/append the same output in a file. Basically nawk script should print the output on the console/screen and as well it should write/append the same result to a file. script :... (3 Replies)
Discussion started by: Optimus81
3 Replies

5. UNIX for Dummies Questions & Answers

Shell script - getting Time difference using awk

Hi..I have the data in a file like in this format, and I need the output time difference in seconds by using awk command. Start date/time and end date/time given in column 2,3 & 4,5. Please assist how to write shell script. File1.txt JOB1 10/09/2013 17:42:16 10/09/2013 17:43:46 SU 6202685/1... (4 Replies)
Discussion started by: mprithvi
4 Replies

6. Shell Programming and Scripting

sed commands success / fail from commandline vs ksh script

solaris 5.10 Generic_138888-03 sun4v sparc SUNW,Sun-Fire-T200 I need a sed command that tests true when presented with lines that contain either forward and backslash. input file: c:/myFile.txt c:\yourFile.txt It doesn't appear that sed (in my environment anyway) supports... (4 Replies)
Discussion started by: msutfin
4 Replies

7. Shell Programming and Scripting

Script executed by Cron or commandline

Hello all, I have a question regarding the difference betwen cron and command line. What I would like to do is to print a statement into a logfile if a script has been executed from cron or from command line. It should be as: #!/bin/bash if <Check if this script has been... (3 Replies)
Discussion started by: API
3 Replies

8. Shell Programming and Scripting

awk script to find time difference between HTTP PUT and HTTP DELETE requests in access.log

Hi, I'm trying to write a script to determine the time gap between HTTP PUT and HTTP DELETE requests in the HTTP Servers access log. Normally client will do HTTP PUT to push content e.g. file_1.txt and 21 seconds later it will do HTTP DELETE, but sometimes the time varies causing some issues... (3 Replies)
Discussion started by: Juha
3 Replies

9. Shell Programming and Scripting

awk to calculate difference of split and sum the difference

In the awk I am trying to subtract the difference $3-$2 of each matching $4 before the first _ (underscore) and print that value in $13. I think the awk will do that, but added comments. What I am not sure off is how to add a line or lines that will add sum each matching $13 value and put it in... (2 Replies)
Discussion started by: cmccabe
2 Replies

10. Shell Programming and Scripting

How to put a difference calculation in my awk script ?

Hello, For my CGI, I have this script : #!/bin/bash echo "Content-type: text/html" echo "" echo ' <html> <head> <meta http-equiv="Content-Type" content="test/html"; charset=UTF-8"> <title> CLF MONITORING </title> <h1> FRAME... (4 Replies)
Discussion started by: Tim2424
4 Replies
DLOCATE(1)							      dlocate								DLOCATE(1)

NAME
dlocate - program to view debian package information SYNOPSIS
dlocate [OPTIONS] [command] [ package... | PATTERN...] DESCRIPTION
dlocate is a fast alternative to dpkg for queries like `dpkg -L' and `dpkg -S' COMMANDS
(none) List all records where either the package name or the filename matches PATTERN. Note that dlocate uses GNU grep, so normal regexp metacharacters need to be taken into account or avoided by using the '-F' (Fixed String) grep option. For example, to search for `/usr/bin/[', you might try: dlocate '/usr/bin/[' or dlocate -F '/usr/bin/[' -S list all records where only the filename matches PATTERN. Note that dlocate uses GNU grep, so normal regexp metacharacters need to be taken into account. Fixed String searches are incompat- ible with -S For example, to search for `/usr/bin/[', you need to type: dlocate '/usr/bin/[' -l Regexp-enhanced emulation of `dpkg -l'. Shows all packages which match package. Internally this uses grep on a file containing the reformatted output output of 'dpkg -l' (four fields separated by tabs; status, package-name, installed version, short description) so it will return packages whose version or short description matches, too. Various flavours of regular expression are supported. For example, Extended Regexp: dlocate -l '^..[[:space:]]libc6' or Perl Regexp: dlocate -P -l '^..slibc6' Both of these will list all the packages whose names start with `libc6'. Note that because of the difference between regular expressions and dpkg's shell-style pattern matching, the output from dlocate -l is occasionally different to the output from dpkg -l. This is not a bug, regular expressions are far more flexible than shell pattern matching. This is the way dlocate is supposed to run, but it may require some knowledge of regular expressions to get the output you want. -k List package names of installed kernels and all related packages -K Detailed list of installed kernels and all related packages -L List all files in package. -s Print status of package. -ls `ls -ldF' of all files in package. -lsconf `ls -ldF' of conffiles in package. -conf List conffiles in package. -du `du -sck' of all files in package. -md5sum List md5sums (if any) of package. -md5check Check md5sums (if any) of package. -man List man pages (if any) in package. -lsman List full path/filenames of man pages (if any) in package. -lsbin List full path/filenames of executable files (if any) in package. OPTIONS
--filename-only Only output file names when searching for files --package-only Only output package names when searching for files -w, --word-regexp Select only those lines containing matches that form whole words. The test is that the matching substring must either be at the beginning of the line, or preceded by a non-word constituent character. Similarly, it must be either at the end of the line or fol- lowed by a non-word constituent character. Word-constituent characters are letters, digits, and the underscore. -i, --ignore-case Ignore case distinctions in the PATTERN -E, --extended-regexp Interpret PATTERN as an extended regular expression. This is the default. -F, --fixed-strings Interpret PATTERN as a list of fixed strings, separated by newlines, any of which is to be matched. -G, --basic-regexp Interpret PATTERN as a basic regular expression. -P, --perl-regexp Interpret PATTERN as a Perl regular expression. This is considered to be highly experimental within GNU grep and may warn of unim- plemented features. -h, -H, --help Produces a short help message and exits. -V, --version Display dlocate's version number and exit. -v, --verbose, --debug Produce verbose debugging output FILES
/etc/default/dlocate Configuration file with default options. Currently the only option is to enable/disable gzip compression of /var/lib/dlocate/dlo- catedb. /var/lib/dlocate/dlocatedb plain text listing of all files belonging to all packages (optionally compressed) /var/lib/dlocate/dpkg-list Listing of all packages known to dpkg. This contains the reformatted output output of 'dpkg -l'. The file format is four fields separated by tabs: status [TAB] package-name [TAB] installed version [TAB] short description EXAMPLES
To find which package `/usr/bin/[' belongs to: dlocate '/usr/bin/[' To view all man pages contained within the dpkg package: man $(dlocate -man dpkg) To purge kernel version 2.6.28.7 and all related module packages: dlocate -k | grep -- -2.6.28.7 | xargs apt-get purge To check the md5sums of the dlocate package: dlocate -md5check dlocate To use dpkg-repack to make a backup copy of all installed mythtv packages just before upgrading them: dlocate -l mythtv | grep '^.i' | awk '{print $2}' | xargs dpkg-repack # dlocate -l mythtv | grep '^.i' | awk '{print $2}' | xargs dpkg-repack dpkg-deb: building package `libmythtv-perl' in `./libmythtv-perl_0.21.svn20090414-0.0_amd64.deb'. dpkg-deb: building package `mythtv' in `./mythtv_0.21.svn20090414-0.0_amd64.deb'. dpkg-deb: building package `mythtv-backend' in `./mythtv-backend_0.21.svn20090414-0.0_amd64.deb'. dpkg-deb: building package `mythtv-common' in `./mythtv-common_0.21.svn20090414-0.0_amd64.deb'. dpkg-deb: building package `mythtv-database' in `./mythtv-database_0.21.svn20090414-0.0_amd64.deb'. dpkg-deb: building package `mythtv-doc' in `./mythtv-doc_0.21.svn20090414-0.0_amd64.deb'. dpkg-deb: building package `mythtv-frontend' in `./mythtv-frontend_0.21.svn20090414-0.0_amd64.deb'. dpkg-deb: building package `mythtv-perl' in `./mythtv-perl_0.21.svn20090414-0.0_amd64.deb'. dpkg-deb: building package `mythtv-status' in `./mythtv-status_0.9.0-5_amd64.deb'. dpkg-deb: building package `mythtv-themes' in `./mythtv-themes_0.21-0.0_amd64.deb'. dpkg-deb: building package `mythtvfs' in `./mythtvfs_0.5.2-2_amd64.deb'. dpkg-deb: building package `python-mythtv' in `./python-mythtv_0.21.svn20090414-0.0_amd64.deb'. ENVIRONMENT VARIABLES
COLUMNS Sets the number of columns dlocate should use when displaying formatted text. Currently only used by -l. Values lower than 80 are ignored. SEE ALSO
dpkg(1), update-dlocatedb(8), grep(1) and grep-dctrl(1). AUTHOR
dlocate was written by Jim Pick <jim@pick.com> and Craig Sanders <cas@taz.net.au>. dlocate is Free Software licensed under the GNU General Public License. Debian Project 2009-06-03 DLOCATE(1)
All times are GMT -4. The time now is 01:52 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy