There is a service that runs that we call multi-streaming that calls a shell script multiple times simultaneously. In this shell script is the following line:
When I run this manually it produces the desired results, but when I run it via the service, the script errs at this line with a meaningless error message. I've put in a request to get my development group to improve error messaging, but since that may take too long, I was wondering if there was a way to use awk to do exactly what tr and sed do above.
If it runs from the command line but not from a 'service', it is probable that the the service is not able to find the tr or the sed utility. Try modifying your script to include the full pathname to tr and sed.
You didn't say what the meaningless error message was...sometimes they only seem meaningless.
I would generally agree that differences in the PATH are the most common reason for scripts to fail when run under a batch. But "tr" and "sed" are both in /usr/bin, which should really be in the path always. Still, it is a good habit to use absolute paths when scripting.
I would be more concerned that $POLLFILE is not set, or is set to something wonky. Depending on its value, it could cause some very strange responses indeed.
I failed to provide a key piece of info - this is MKS Toolkit, a unix emulator on a windows box.
Here is the error message:
Could this be more meaningless?
The unpack4690.bat contains this one line:
The unpack4690.sh contains these lines:
The service that calls the unpack4690.bat provides the file name of the poll file, the windows batch script sends that as the parameter to the shell script, the cp to add packed to the end succeeds and the ibm4690 unpack program succeeds in producing the OUT file which indicates that the POLLFILE variable is working as it should. If I remove the tr line, the unpack4690.sh works perfectly, but then the output file doesn't match the format needed because of the changes that did not take place.
I think I need to push heavily on my dev group to get a better error message and to fix this. I tried specifying the path to tr in the script but I got the same results.
Without being able to reproduce your problem here i'm left to guesses. Still i think quoted line could be rewritten in a simpler way, leaving less room for probable errors. sed provides the same (in fact a superset of) abilities to manipulate text as tr does, so when you have to call sed anyways it can do tr's work too.
I don't know what "\r" and "\n" is on your system, but perhaps you will have to replace it with some native characters. In case you simply do a dos2unix-translation, that is, change CR/LFs to EOLs, the command would be "s/^M$//" on the unix machine, the "^M" being a CTRL-M character literally. However i have no idea how this done in Windows, so you will probably have to twiddle around with that, just replace the "\r" and the "\n" with the correct characters and it should work.
Thanks for the really helpful tips, but so far no luck. I need to use tr because both awk and sed are getting stuck on the line length. The length of the lines in this pollfile is greater than 20,000 characters, the awk command gives me this message:
while the new and improved sed command gives me this message:
When I run tr manually I get the desired results with the original line of code I started with. When it runs from the service I get the error message, so the problem must be within the service. I've logged a defect with the dev group in my company to see if they can isolate the problem in the service.
Thanks for all of your help, I was hoping awk could bypass the problem, but because of the line length it isn't working.
My code below will print only the email address from all lines. I want to convert it with sed or awk.. also what if i just want to find only filenames.
cat LIS_EMAIL | perl -wne'while(/+@+\w+/g){print "$&\n"}'
Hoping to extract the filename such us .exe, .bin. From file that has scrambled... (8 Replies)
Hi,
Need a help to replace a word if a pattern is found between the delimiters preferably using SED or AWK.
below is the sample file that iam dealing with, need to match pattern 'application' if found replace the whole word between the delimiters and also print the lines that don't match.... (1 Reply)
All,
I have thousands of lines in a file with following format
DATA=_ONE_XXX_YYY_CCC_HHHG_
DATA1=_GGG_JJJJ_HHH_UUU_JJJJ_HHHH_LLL_
DATA3=_MMM_GG_NN_QQQQ_FFF_III_
I want to replace _ with . by ignoring the first (=_) and last (_)
So that out put should looks like... (4 Replies)
Hi,
In a file, I have several time
<IP>232.0.1.164</IP>
...
<IP>232.0.1.135</IP>
I need to replace all the random IP addresses , by 239.0.0.1 and 239.0.0.2 , alternatively.
I try this
grep "<IP>" tsp.xml | awk '{if(NR % 2)print $0}' | cut -d"<" -f2 | cut -d">" -f2 ... (3 Replies)
Hi ,
My file have data like
4:ALMOST NEVER PR 1925836
5:NEVER PR W DDA 5857610
6:NEVER PR WO DDA 26770205
but i want to replace the spaces before last numric digits out put should be like this
4:ALMOST NEVER PR=1925836
5:NEVER PR W DDA=5857610
6:NEVER PR WO... (7 Replies)
Hi
I have a problem when i use awk or sed to replace characters in file.
For example when I want to replace line like this :
00000O120100512 1.70 1.59 0.00 +7.280
I want to get a new line :
0000000O120100512 1.70 1.59 13.56 +7.280
In ksh :
awk... (1 Reply)
Hello i need some help with the usage of sed.
Situation : 2 textfiles, file.in , file.out
In the first textfile which is called file.in are the words for the substitution.
Every word is in a new-line like :
Firstsub
Secondsub
Thridsub
...
In the second textflie wich is called file.out is... (5 Replies)