But when i type this manually grep '2016-05-03 17:3' /tmp/logs/vel.log i see 1000s of lines like below.
Quote:
2016-05-03 17:38:30,352 E- <----- NOT AG MESSAGE ---> modify For policyNum=null,policySeq=null.
2016-05-03 17:38:30,549 ERRRO---> alled for level1org=500,custNum=164048,polStatus=null.
2016-05-03 17:38:30,555ER - <----- NOT AESSAGE ---> called for level1org=500,custNum=14048
......
.....
Like you can see when i manually type the grep command i see 1000s of line but when the same command goes in the script the redirected output to 10min_log shows 0 bytes and no data.
Why ?
Note: when i change grep '$LOGDATE' /tmp/logs/vel.log>10min_log to grep $LOGDATE /tmp/logs/vel.log>10min_log i.e remove the single quotes'' then it works. But i want to grep 2016-05-03 17:3 as one text hence i need the single quotes or if there is another solution ??
Note: I was able to overcome the issue by using double quotes ""
Note: i m with the same user and grp as the directory i.e there is no permission issues.
Please suggest.
Last edited by mohtashims; 05-03-2016 at 08:13 PM..
Because shell variables are not expanded inside single-quoted strings. (And, note that in your echo statement:
single-quote characters are not special inside a double-quoted string; so in that case $LOGDATE is expanded because it is in a double-quoted string; not inside a single-quoted string.)
Because shell variables are not expanded inside single-quoted strings. (And, note that in your echo statement:
single-quote characters are not special inside a double-quoted string; so in that case $LOGDATE is expanded because it is in a double-quoted string; not inside a single-quoted string.)
Don the problem i m reporting is this line ->
and it does not have double quotes.
Also, like i said when i manually copy paste this it gives me the output. It fails only when executed from inside the script !!
QUOTING
Quoting is used to remove the special meaning of certain characters or words to the shell. Quoting can be used to disable special treatment for special characters, to prevent reserved words from being recognized as such, and to prevent parameter expansion.
.
.
.
There are three quoting mechanisms: the escape character, single quotes, and double quotes.
A non-quoted backslash (\) is the escape character. It preserves the literal value of the next character that follows, with the exception of <newline>. If a \<newline> pair appears, and the backslash is not itself quoted, the \<newline> is treated as a line continuation (that is, it is removed from the input stream and effectively ignored).
Enclosing characters in single quotes preserves the literal value of each character within the quotes. A single quote may not occur between single quotes, even when preceded by a backslash.
Enclosing characters in double quotes preserves the literal value of all characters within the quotes, with the exception of $, `, \, and, when history expansion is enabled, !. . . .
The last paragraph shows that ' will be preserved literally and NOT used for quoting.
Now, does Don Cragun's post#4 become clearer?
Quote:
Originally Posted by mohtashims
.
.
.
Also, like i said when i manually copy paste this it gives me the output. It fails only when executed from inside the script !!
Difficult to believe. Please execute the exactly identical command from the command line and from within a script, and compare the results.
Also, like i said when i manually copy paste this it gives me the output. It fails only when executed from inside the script !!
Sorry. I just do not believe you.
If I run the following commands sequentially in an interactive shell that uses Bourne shell syntax:
I get the output shown in bold text from those commands. And, if I put the commands in a script:
and execute it, I get the output:
If you use a shell that uses csh syntax instead of Bourne shell syntax, you still get the same results if you change the 1st command from:
to:
The only way that the command:
and the command:
produce the same, non-empty output is if the variable XYZ has been set with something like:
(assuming Bourne shell syntax) or:
(assuming csh shell syntax) and the file named file contains the literal string $XYZ unless you have a function named grep, an alias for grep, or a non-standard version of the grep utility that is found in your PATH environment variable before the standard version of the grep utility.
This User Gave Thanks to Don Cragun For This Post:
Hi
I ahve 2 files with below content:
cat file1
FILE3
test1
test2
cat file2
file3
ghg
test1
test2
i want to use file1 as pattern file and find out the missing strings in file2.(i.e ghg in this case regardless of c ase)
I have tried:
grep -i -v -f /path/file1 /path/file2 (6 Replies)
I'm working on a script to make backup of various folder located on various host using different OS.
I got a strange behaviour because the script donět process all lines of a configuration file, the script execute only one loop even the input file have 6 lines:
This is the script:
#!/bin/bash... (4 Replies)
Hi all,
I'm having this scenario which for the moment I cannot resolve. :(
I wrote a script to make a dump/export of the oracle database. and then put this entry on crontab to be executed daily for example.
The script is like below:
cat /home/oracle/scripts/db_backup.sh
#!/bin/ksh
... (3 Replies)
Hello,
I was trying to identify lines who has a word of the following pattern "xyyx" (where x, and ys are different characters).
I was trying the following grep -
egrep '(\S)()\2\1'
This pattern do catches the wanted pattern, but it also catches "GGGG" or "CCCC" patterns. I was trying to... (5 Replies)
Hi All,
I got a strange problem here. I have a perl script which is fetching data from a database table and writing a file with that data.
If i run that script from linux command line, the file it creates is a normal ascii text file without any binary character in it.But... (9 Replies)
Hi people,
I'm having some strange behaviour with an 'expect' script.
spawn csession blah
expect "Username: "
send "userblah\r"
expect "Password: "
send "passwordblah\r"
interact
When I execute the script as root it runs perfectly.
However, when executed as any other... (0 Replies)
Apologies if this has been mentioned elsewhere, my search skills may be lacking somewhat today.
I have a script that does the following (as a test):
find . -name "*.txt" -exec file {} \; >>$sFullFilePath
Now, the variable is set up up correctly in the script too. When I run the script... (1 Reply)
$ echo a.bc | sed -e "s/\|/\\|/g"
|a|.|b|c|
$
Is the behavior of the sed statement expected ? Or is this a bug in sed ?
OS details
Linux 2.6.9-55.0.0.0.2.ELsmp #1 SMP Wed May 2 14:59:56 PDT 2007 i686 i686 i386 GNU/Linux (8 Replies)
Can some-one give me a view to this :
I have a directory in an unix server, having permissions r-xr-xr-x .This directory is basically a source directory.
Now there is another directory basically the destination directory which has all the permissions.
Note:I log in as not the owner,but user... (5 Replies)