From mboxrd@z Thu Jan 1 00:00:00 1970 From: urgrue Subject: Re: split a file or return shell variable to a program Date: Fri, 23 Apr 2004 11:10:44 +0300 Sender: linux-admin-owner@vger.kernel.org Message-ID: <20040423081044.GC23181@fede2.tumsan.fi> References: <16520.5940.736287.302160@cerise.nosuchdomain.co.uk> Mime-Version: 1.0 Content-Transfer-Encoding: 7BIT Return-path: Content-Disposition: inline In-Reply-To: <16520.5940.736287.302160@cerise.nosuchdomain.co.uk>; from glynn.clements@virgin.net on Thu, Apr 22, 2004 at 22:03:58 +0300 List-Id: Content-Type: text/plain; charset="us-ascii"; format="flowed" To: linux-admin@vger.kernel.org here's another way to do it (just with bash): counter=1 while read line do if [ -z $line ] ; then continue else echo $line > $counter counter=`expr $counter + 1` fi done < your_sentences_file On 2004.04.22 22:03, Glynn Clements wrote: > > vick Julius wrote: > > > I have a text file I want to split. The file contains some > sentences. > > between sentences I have empty 1 line. I want to split this file and > put > > each sentence in a separate file with names 1, 2,3 ... > > do you have any idea to split it such as with awk or split? > > You can't do it with split; that only handles the case where each > contains a fixed number of bytes or lines. > > You can do it with awk easily enough, e.g.: > > #!/usr/bin/awk -f > BEGIN { > ofile = 0; > } > > /^ *$/ { > close(ofile); > ofile++; > } > > /[^ ]/ { > print > ofile; > } > > > Here is my strategy: > > > > I wrote a C program in which I call bash shell script to increment a > > > variable... > > > > In the shell I defined the variable k such as: > > $export k=1 > > in my bash script file,myFile, for testing, I put > > echo $k > > let k+=1 > > (or this expression k=`expr $k + 1`) > > echo $k > > > > when I run this script file, it gives me > > 1 > > 2 > > > > the problem is when I called form a C or C++ program, such > > system("echo $k"); > > //this gives 1 > > system("./myFile"); > > // this display > > // 1 > > //2 > > system("echo $k"); > > //here the problem, it display 1 not 2 > > > > I want to have the incremented value for k, i.e 2 not the original > one. > > Each process has its own set of environment variables. A process can > modify its own environment variables, but not those of another > process. > > If you want to share state between processes, use a file. > > -- > Glynn Clements > - > To unsubscribe from this list: send the line "unsubscribe linux- > admin" > in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > >