reading and writing random line from file
Hello,
In my tcsh script I need to read a random line from a file and write it into a new file. I can open the file with fopen, but don't know how to continue. another restriction is that the line being read has to appear after the second @ symbol (so basically I need to recognize the second @, the end of the file, and randomly pick a line in between). I saw a previous related post here but it was too advanced for me to understand it. I am new to linux and programming, so please account for that if you are trying to help me. Any suggestions will be appreciated! BK |
Easy:
1. use 'fgets' if you know the length of the longest line - read in 1 line at a time until you find the second '@' - use 'ftell' to get its file position. 2. use 'fseek' to go to the end of the file and read the position with 'ftell' 3. Select a random number from the '@' to the end of file and read backwards until you find a '\n' - then use fgets again to read the line from that position. Alternatively, after finding the start, just use 'fgets' + 'ftell' until you get to the end of file; use teh info from 'ftell' to make a list of line start positions - then select them at random and use 'fgets' to read them. |
2 Qns.
1. is this homework? 2. are you programming in shell or C (ie which lang)? |
1. No, it's not homework, it's for academic research
2. if i understood your question, it's a C shell (or tc shell - tcsh). Quote:
|
Thanks for the reply. I am trying to get the right syntax and script with the commands you suggested. I may be back with some usage clarification questions...
BK Quote:
|
clarifications
Quote:
I am running the tcsh script in cygwin. The first line of my script is #!/usr/bin/tcsh and I am able to execute it. When I added fopen command to read the content of receptor.mol2 I get an error. The script: FILE * receptor receptor = fopen("receptor.mol2","r") The error: $ ./fopentest.tcsh dock.csh: ASCII text, with CRLF line terminators fopentest.tcsh: a /usr/bin/tcsh\015 script text executable receptor.mol2: ASCII text receptor: cannot open `receptor' (No such file or directory) Badly placed ()'s. where the first word in each line is a file in the folder. Can you walk me through the syntax please? Thanks, BK |
Disclaimer; I've never used tcsh
1. /usr/bin/tcsh is a shell version eg like bash or ksh 2. FILE * receptor receptor = fopen("receptor.mol2","r") this looks like C code ie a a compilable lang. ie 2 completely diff langs. You can't mix them like this. (but see disclaimer above) |
All times are GMT -5. The time now is 06:21 PM. |