I am trying to allow a user to enter in text and then store that text in a variable $gene to run in an awk command in which those values are used to run some calculations. I am getting syntax errors however, when I try. Thank you .
The awk runs great if it is a pre-defined file that is used, but it could also be user input.
Last edited by cmccabe; 02-22-2016 at 07:00 PM..
Reason: updated format
In fact, you tell to only catch the first genom only, and no other.
Because you say the IFS shall be ',' which is shall be used to seperate the genoms, mainwhile, you only read 1 genom, as 'gene' will be split into as many arguments/variables as the user passes using ','.
Saying:
Replcae the IFS= part to a later procedure, when parsing the user input.
Parsing is done after reading, or if while reading, it must be a limited (say pass 3 genoms, then you mus tread 3 variables - not just one).
I'm no scientist, but afaik a genom doesnt have 'spaces' in between, so they might just seperate the genoms passed by spaces OR coma - since the IFS is removed, that doesnt matter, in fact, its even simpler to work with the passed genoms, if the users do not use ',' to seperate the list.
Only use the red parts if you insist of using coma to seperate the list, if using space its not required at all.
Other than that, please make the according corrections of for loops as Don already stated.
Other than that, please make the according corrections of for loops as Don already stated.
wasn't clear, line 84 in your script:
is missing a do and a done.
Since the indentation in your code seems to be random, I can't tell what you intend to include inside that for loop (i.e., where the done should be placed).
This User Gave Thanks to Don Cragun For This Post:
I updated the portion of code and it does seem to append the entered genes to a file GENE.txt. The problem is even though each line is one a new line a space is put in after wach so no calculation results.
PTPN11,SCN1A,FBN1
GENE.txt looks like
.
However, if there is only one gene entered PTPN11 then the calculation works fine.
I apologize about the indenting, I am a scientist and not a programmer. Can you recommend some books on correct indentation? Thank you .
Last edited by cmccabe; 02-23-2016 at 04:17 PM..
Reason: updated code
There is no strict rule for indention.
Its purpose is to quickly realize the structure. But people are different.
I usually put for/do/done on one indention level, and increase indention of the code block in between
Same for if/then/else/fi (and further indention of the code blocks in between).
--
If you really use the $gene array (and consequent use of ${gene[ ]} index) then your original IFS="," read -a makes sense, and you don't need the extra IFS stuff that SEA suggested.
Last edited by MadeInGermany; 02-23-2016 at 06:20 PM..
Reason: Code suggestion
This User Gave Thanks to MadeInGermany For This Post:
Dear Friends,
I am looking for a shell script to merge input files into one file .. here is my idea:
1st paramter would be outfile file (all input files content)
read all input files and merge them to input param 1
ex: if I pass 6 file names to the script then 1st file name as output file... (4 Replies)
Hello,
I'm trying to figure out how best to approach this script, and I have very little experience, so I could use all the help I can get. :wall:
I regularly need to delete files from many directories.
A file with the same name may exist any number of times in different subdirectories.... (3 Replies)
this section of the awk code i have here takes file to work with from the user.
the user specifies the file name from the command line and the file name is assigned to the variable $FLIST
awk 'BEGIN {
while((getline < "'${FLIST}'")>0)
S
FS="\n"; RS="}\n"
}
now, i dont want... (5 Replies)
Hi,
echo "Enter file name of input file list along with absolute path : "
read inputFileList
if
then
for string in `cat inputFileList`
do
echo $string
done
else
echo " file does not exist"
fi
From the above code, if the user enters a invalid file... (1 Reply)
Hi Jim,
I have following script,i which i need to take dynamic value .
script,
nawk -v v1=grep"INT_EUR" $propertifilename | cut -d"=" -F2` -F'~' '{if (NF-1 !=v1)
{print "Error in " $0 " at line number "NR" tilde count " N-1}}' $filename
In the above script i want to use INT_EUR as a variable... (2 Replies)
Hi guys,
I am new to AWK and unix scripting. Please see below my problem and let me know if anyone you can help.
I have 2 input files (example given below)
Input file 2 is a standard file (it will not change) and we have to get the name (second column after comma) from it and append it... (5 Replies)
I am trying to write a awk script that prompts user for input to set the FILENAME varable. I can get it set, but I think awk is not doing anything with it.
this is what I have so far
#!/usr/bin/nawk -f
BEGIN {
FILENAME = ""
printf "Enter name of file to check in : "
... (2 Replies)
Using the following I'm trying to print the user's response to the prompt Y / N but I get nothing other than the contents of $1?
awk '{
printf($1 " ? (Y/N)")
getline myresponse < "-"
system("read myresponse")
if (myresponse == "Y")
{ print $1... (17 Replies)