I tried the following code in aix,in ksh
code is long but there is no while etc.
let say your original file origfile
step 1.
sed s/"|"/" "/g origfile >tempfile
/** if you dont have sed ,you must change "|" with blank with someting */
/after this your original file looks like this 12123 12345678 */
grep -n "^$" tempfile >origfile,rm tempfile
/*after this your original file looks like this ;
1 12123 12345678
2 42142 53988989
step 2.
/produce 1 million random numbers and save to the RandNumbersFile/
step 3.
/produce 1 million random numbers and save to the RandRecordsFile/
sort -u RandRecordsFile>tempfile
mv tempfile RandRecordsFile
/you can produce 1 million numbers but if you sort it unically it can be less than 1 million. you must be sure that every line in this file is unique, the above command arranges this/
let "NeededLine=1000000-`wc -l RandRecordsFile |awk '{print $1}'`"
/*this line shows you how many new records do you need after sort */
counter=0
while [ $counter -lt $NeededLine ]
do
/**produce random RandomRecord(means random number).I mean you must add your code here **/
grep $RandomRecord RandomRecordsFile >/dev/null
if [ $? -ne 0 ]
then
echo $RandomRecord >>RandomRecordsFile
let "counter=$counter+1"
fi
done
sort -u RandomRecordsFile>tempfile
paste tempfile RandNumbersFile >RandomRecordsFile
rm tempfile
/** after this your RandomRecordsFile looks like this ;
1 12345678
27 53988989
first one stands for record num and the second rundom field (orig second field) **/
join -v1 origfile RandomRecordsFile >tempfile /** unmatched lines **/
join -o 1.1,1.2,2.2 origfile RandomRecordsFile >>tempfile /*matched lines */
sort -u tempfile >origfile /*sort on field1 */
/**if you need add these lines
cut -f2,f3 origfile >tempfile
sed s/" "/"|"/g tempfile>origfile **/
rm tempfile
so the code is;
/produce 1 million random numbers and save to the RandNumbersFile/
/produce 1 million random numbers and save to the RandRecordsFile/
cp yourfile origfile
sed s/"|"/" "/g origfile >tempfile
grep -n "^$" tempfile >origfile
sort -u RandRecordsFile>tempfile
mv tempfile RandRecordsFile
let "NeededLine=1000000-`wc -l RandRecordsFile |awk '{print $1}'`"
while [ $counter -lt $NeededLine ]
do
/**produce random RandomRecord(means random number).I mean you must add your code here **/
grep $RandomRecord RandomRecordsFile >/dev/null
if [ $? -ne 0 ]
then
echo $RandomRecord >>RandomRecordsFile
let "counter=$counter+1"
fi
done
sort -u RandomRecordsFile>tempfile
paste tempfile RandNumbersFile >RandomRecordsFile
join -v1 origfile RandomRecordsFile >tempfile
join -o 1.1,1.2,2.2 origfile RandomRecordsFile
sort -u tempfile >origfile
rm tempfile