亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 8525 | 回復(fù): 13
打印 上一主題 下一主題

讓文本文件的行內(nèi)容亂序儲(chǔ)存  關(guān)閉 [復(fù)制鏈接]

論壇徽章:
0
1 [報(bào)告]
發(fā)表于 2003-11-11 11:09 |只看該作者

讓文本文件的行內(nèi)容亂序儲(chǔ)存

我寫了一個(gè)程序,大家來看看吧。。。

數(shù)據(jù)文件: testfile
$cat testfile
1  --- I
2  --- L
3  --- O
4  --- V
5  --- E
6  --- Y
7  --- O
8  --- U
9  --- !
10 --- !

$rand_output.sh testfile
5  --- E
1  --- I
3  --- O
10 --- !
7  --- O
2  --- L
4  --- V
8  --- U
9  --- !
6  --- Y

$cat rand_output.sh


#!/bin/csh -f

set FILE = $1

set max_line_num = `wc -l $FILE | awk '{print $1}'`

nawk -v max_line=$max_line_num -f rand_out.awk $FILE > $FILE.randout

foreach LINE (`cat ${FILE}.randout`)

  awk '{if(NR == "'$LINE'"print;next;}' $FILE

end


$cat rand_out.awk


BEGIN{
       FS = " ";
       #max_line = 10 #max_line_num ;
       end_line = max_line+1;
       rand_line_now = 0;
       for(i=1;i<end_line;i++)line = 0;
       complete=0;
       current_line=1;
       no_same = 0;

       do
       {
        do
        {

         rand_line_now = int((rand()*end_line));

        }while( rand_line_now == 0 || rand_line_now >= end_line  )

       if(line[current_line]==0)
        line[current_line] = rand_line_now;
       else continue;

       j=1;
       no_same=1;
       while(j<current_line && no_same==1)
       {
         if(line[j] == line[current_line])
         {
                 no_same = 0
                 line[current_line] = 0;
         }
         else
         {
                 j++;
                 no_same=1;
         }
        }

       if(j==current_line && no_same==1 && current_line < max_line)
         current_line++;

       if(current_line == max_line && line[max_line] != 0 && no_same == 1 ) complete = 1;

       }while( complete == 0 )

    }

END{
   for(k=1;k<end_line;k++)
     print line[k];
   }


實(shí)際上我的想法是利用 awk 的rand來生成一個(gè)數(shù)據(jù)文件行數(shù)的隨機(jī)
排列,然后保存這個(gè)排列,最后按照該排列重新輸出文件。 其實(shí)如果
用C來實(shí)現(xiàn)可能會(huì)更簡單,而且隨機(jī)性更強(qiáng),但用awk來實(shí)現(xiàn)會(huì)比較
方便,如果再加工一下可以作為簡單的文本加密程序來處理一些敏感
信息的文本了。。 (只要把輸出的隨機(jī)行數(shù)列表保存在按照正常順序
輸出就行了)。 這里比較麻煩的處理就是怎么得到合法的隨機(jī)數(shù),并且
是不允許跟其他已經(jīng)得到的數(shù)重復(fù)的,其他就沒啥了~~~

                      

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2003-11-11 14:12 |只看該作者

讓文本文件的行內(nèi)容亂序儲(chǔ)存

應(yīng)該再弄個(gè)還原的scripts就齊了,給MM發(fā)過去,應(yīng)該還算比較好玩。。。。 :))

    。。。。沒人捧場說。。:(
Greenergy 該用戶已被刪除
3 [報(bào)告]
發(fā)表于 2003-11-11 20:50 |只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2003-11-11 22:09 |只看該作者

讓文本文件的行內(nèi)容亂序儲(chǔ)存

就是打亂可以,怎么還原啊...........

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2003-11-12 09:41 |只看該作者

讓文本文件的行內(nèi)容亂序儲(chǔ)存

原帖由 "Greenergy" 發(fā)表:

sunkey, csh,太好了.

有csh的問題向你請(qǐng)教


   分特。。差太遠(yuǎn),我也是現(xiàn)學(xué)現(xiàn)賣, 多來這里,跟大家學(xué)的。。。

                 

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2003-11-12 10:44 |只看該作者

讓文本文件的行內(nèi)容亂序儲(chǔ)存

[quote]原帖由 "光明曉仙"]就是打亂可以,怎么還原啊...........[/quote 發(fā)表:


因?yàn)檫@個(gè)程序本身就是隨機(jī)產(chǎn)生一組行號(hào)排列,還原就把產(chǎn)生的隨機(jī)
排列再按照順序換回去就是了。 假如利用樓上的隨機(jī)排序產(chǎn)生的隨機(jī)
亂排的文本為:

$cat 2u


#5  --- E;
#1  --- I;
#3  --- O;
#10 --- !;
#7  --- O;
#2  --- L;
#4  --- V;
#8  --- U;
#9  --- !;
#6  --- Y;


利用下面的程序即可還原:
$ rand_input.sh 2u

#1 --- I;
#2 --- L;
#3 --- O;
#4 --- V;
#5 --- E;
#6 --- Y;
#7 --- O;
#8 --- U;
#9 --- !;
#10 --- !;


其中代碼如下:
$cat rand_input.sh


#!/bin/csh -f

set FILE = $1
set rand_num_file = ${FILE}.randout

set max_line_num = `wc -l $FILE | awk '{print $1}'`

nawk -v max_line=${max_line_num} -v rf=${rand_num_file} -f rand_in.awk $FILE | sort -n | nawk '{$1="";print;next;}'



$cat rand_in.awk

BEGIN{
       FS = " ";
       end_line = max_line+1;
       for(i=1;i<end_line;i++)line = " ";
      }
      
     {
       line[NR] = $0;
       while( (getline < rf ) > 0)
       {
               line_num = $0;
               break;
        }
        print line_num " " line[NR];
        next ;
      }
END{close(rf);  exit 1; }


其中, ${FILE}.randout  就是利用樓上程序產(chǎn)生的一個(gè)隨機(jī)排序列
必須有這個(gè)文件才可以還原成原來的文本了。。。。
可以找一個(gè)比較大的文本來轉(zhuǎn)換試試看。。。嘿嘿。。。。

        :emn4:          

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2003-11-12 14:40 |只看該作者

讓文本文件的行內(nèi)容亂序儲(chǔ)存

精華~~~

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2003-11-12 14:46 |只看該作者

讓文本文件的行內(nèi)容亂序儲(chǔ)存

高手,俺佩服,建議給sunkey 加倆精華..........

論壇徽章:
1
榮譽(yù)版主
日期:2011-11-23 16:44:17
9 [報(bào)告]
發(fā)表于 2003-11-12 15:44 |只看該作者

讓文本文件的行內(nèi)容亂序儲(chǔ)存

支持!

論壇徽章:
0
10 [報(bào)告]
發(fā)表于 2003-11-12 16:50 |只看該作者

讓文本文件的行內(nèi)容亂序儲(chǔ)存

[quote]原帖由 "光明曉仙"]高手,俺佩服,建議給sunkey 加倆精華..........[/quote 發(fā)表:


  哈。。。慚愧慚愧。。。其實(shí)都是跟這里學(xué)來的~~
  要不是經(jīng)常來這向大家學(xué)習(xí),我根本不知道啥是awk、sed說。。。。

                 
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP