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

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

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
12
最近訪問(wèn)板塊 發(fā)新帖
樓主: robinhappiness
打印 上一主題 下一主題

請(qǐng)教一個(gè)替換文本文件中指定位置的值的perl的寫(xiě)法! [復(fù)制鏈接]

論壇徽章:
46
15-16賽季CBA聯(lián)賽之四川
日期:2018-03-27 11:59:132015年亞洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49雙魚(yú)座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亞冠之布里斯班獅吼
日期:2015-07-13 10:44:56
11 [報(bào)告]
發(fā)表于 2015-10-23 09:13 |只看該作者
回復(fù) 10# sunzhiguolu


    你最好按9樓寫(xiě)的那樣換種思路,utf8 中文常用字都是3個(gè)字節(jié)的,但是后來(lái)陸續(xù)添加了不少生僻字長(zhǎng)度就沒(méi)法保證了。你還要把他們轉(zhuǎn)換成兩字節(jié)的,明顯誤入歧途了

論壇徽章:
307
程序設(shè)計(jì)版塊每周發(fā)帖之星
日期:2016-04-08 00:41:33操作系統(tǒng)版塊每日發(fā)帖之星
日期:2015-09-02 06:20:00每日論壇發(fā)貼之星
日期:2015-09-02 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-04 06:20:00每日論壇發(fā)貼之星
日期:2015-09-04 06:20:00每周論壇發(fā)貼之星
日期:2015-09-06 22:22:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-09 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-19 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-20 06:20:00每日論壇發(fā)貼之星
日期:2015-09-20 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-22 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-24 06:20:00
12 [報(bào)告]
發(fā)表于 2015-10-23 09:18 |只看該作者
回復(fù) 11# zhlong8
謝謝您的提醒, 在 Windows 環(huán)境的確是按照每個(gè)漢字占用 2 字節(jié)進(jìn)行處理的. 非常感謝您的幫助, 謝謝...

   

論壇徽章:
4
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-10-10 06:20:00每日論壇發(fā)貼之星
日期:2015-10-10 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-10-11 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-10-25 06:20:00
13 [報(bào)告]
發(fā)表于 2015-10-23 09:29 |只看該作者
非常感謝各位高人的回復(fù)!

我之前做的測(cè)試數(shù)據(jù)比較規(guī)范,實(shí)際上要處理的對(duì)象文件里面包含有全角和半角的空格、漢字、數(shù)字、符號(hào)等都有,
而且每個(gè)字段的劃分也沒(méi)規(guī)律,打個(gè)比方我要把第2byte的數(shù)值插入到第25byte的位置(zz0和yyy之間),
第1和第2byte位置的值肯定只占一個(gè)字節(jié),還有第25byte的位置肯定為只站一個(gè)字節(jié)的半角空格。
字段的布局沒(méi)有規(guī)律!

想要做的事情就是把文件中的第2byte位置的列值(只占1個(gè)字節(jié)的字母)
賦值到文件中第25byte空格(只占一個(gè)字節(jié)的半角空格)的位置。

對(duì)象文件
$cat input.txt
1000000
1F 123456 ー  qqq q zz0 yyy  
2G 7測(cè)012 --  q qq  zz0 yyy
3V 1試456     qq  qq zz0 yyy
4H 234567    qqq  q zz0 yyy
09000000

想要的輸出結(jié)果
$cat output.txt
1000000
1F 123456 ー  qqq q zz0Fyyy  
2G 7測(cè)012 --  q qq  zz0Gyyy
3V 1試456     qq  qq zz0Vyyy
4H 234567    qqq  q zz0Hyyy
09000000

論壇徽章:
307
程序設(shè)計(jì)版塊每周發(fā)帖之星
日期:2016-04-08 00:41:33操作系統(tǒng)版塊每日發(fā)帖之星
日期:2015-09-02 06:20:00每日論壇發(fā)貼之星
日期:2015-09-02 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-04 06:20:00每日論壇發(fā)貼之星
日期:2015-09-04 06:20:00每周論壇發(fā)貼之星
日期:2015-09-06 22:22:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-09 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-19 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-20 06:20:00每日論壇發(fā)貼之星
日期:2015-09-20 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-22 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-24 06:20:00
14 [報(bào)告]
發(fā)表于 2015-10-23 09:38 |只看該作者
本帖最后由 sunzhiguolu 于 2015-10-23 09:39 編輯

回復(fù) 9# MMMIX
#!/usr/bin/perl
use strict;
use warnings;
use v5.14;

while (<DATA>) {
  chomp;
  my @f = split;
  say and next unless @f > 1;

  $f[2] = (split //, $f[0])[1];
  say join " ", @f;
}

__DATA__
1F 123456 T qqqqq zzz
2G 7測(cè)012 T qqqqq zzz
3V 1試456 T qqqqq zzz
4H 234567 T qqqqq zzz
90000000

請(qǐng)問(wèn)大神, and 在 say 函數(shù)和 next unless @f > 1 語(yǔ)句塊之間起到一個(gè)什么作用? (不知道劃分的是否正確?)


   

論壇徽章:
95
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-05 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-17 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-18 06:20:002015亞冠之阿爾艾因
日期:2015-09-18 10:35:08月度論壇發(fā)貼之星
日期:2015-09-30 22:25:002015亞冠之阿爾沙巴布
日期:2015-10-03 08:57:39程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-10-05 06:20:00每日論壇發(fā)貼之星
日期:2015-10-05 06:20:002015年亞冠紀(jì)念徽章
日期:2015-10-06 10:06:482015亞冠之塔什干棉農(nóng)
日期:2015-10-19 19:43:35程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-10-21 06:20:00每日論壇發(fā)貼之星
日期:2015-09-14 06:20:00
15 [報(bào)告]
發(fā)表于 2015-10-23 20:35 |只看該作者
回復(fù) 14# sunzhiguolu


    say and next unless @f > 1;

等價(jià)于

   if (@f > 1) {
       say;
       next;
   }

第二種寫(xiě)法更好。

論壇徽章:
95
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-05 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-17 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-18 06:20:002015亞冠之阿爾艾因
日期:2015-09-18 10:35:08月度論壇發(fā)貼之星
日期:2015-09-30 22:25:002015亞冠之阿爾沙巴布
日期:2015-10-03 08:57:39程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-10-05 06:20:00每日論壇發(fā)貼之星
日期:2015-10-05 06:20:002015年亞冠紀(jì)念徽章
日期:2015-10-06 10:06:482015亞冠之塔什干棉農(nóng)
日期:2015-10-19 19:43:35程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-10-21 06:20:00每日論壇發(fā)貼之星
日期:2015-09-14 06:20:00
16 [報(bào)告]
發(fā)表于 2015-10-23 20:49 |只看該作者
回復(fù) 13# robinhappiness


    這個(gè)就更簡(jiǎn)單了,用 split + join 就可以了:

while (<DATA>) {
  my @f = split //;
  $f[24] = $f[1] if @f > 24;
  print join '', @f;
}

論壇徽章:
307
程序設(shè)計(jì)版塊每周發(fā)帖之星
日期:2016-04-08 00:41:33操作系統(tǒng)版塊每日發(fā)帖之星
日期:2015-09-02 06:20:00每日論壇發(fā)貼之星
日期:2015-09-02 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-04 06:20:00每日論壇發(fā)貼之星
日期:2015-09-04 06:20:00每周論壇發(fā)貼之星
日期:2015-09-06 22:22:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-09 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-19 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-20 06:20:00每日論壇發(fā)貼之星
日期:2015-09-20 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-22 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-24 06:20:00
17 [報(bào)告]
發(fā)表于 2015-10-23 20:51 |只看該作者
本帖最后由 sunzhiguolu 于 2015-10-23 20:54 編輯

回復(fù) 15# MMMIX
say and next unless @f > 1;

大神, 您這句不是針對(duì) 90000...行 寫(xiě)的判斷條件嗎?
如果上面的這個(gè)語(yǔ)句與您下面的這句等價(jià), 那么最后一行不就多余了嗎?
if (@f > 1){
   say;
   next;
}
   

論壇徽章:
95
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-05 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-17 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-18 06:20:002015亞冠之阿爾艾因
日期:2015-09-18 10:35:08月度論壇發(fā)貼之星
日期:2015-09-30 22:25:002015亞冠之阿爾沙巴布
日期:2015-10-03 08:57:39程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-10-05 06:20:00每日論壇發(fā)貼之星
日期:2015-10-05 06:20:002015年亞冠紀(jì)念徽章
日期:2015-10-06 10:06:482015亞冠之塔什干棉農(nóng)
日期:2015-10-19 19:43:35程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-10-21 06:20:00每日論壇發(fā)貼之星
日期:2015-09-14 06:20:00
18 [報(bào)告]
發(fā)表于 2015-10-23 21:02 |只看該作者
回復(fù) 17# sunzhiguolu


    把我改寫(xiě)的替換進(jìn)去,然后再按你的理解把覺(jué)得多余的語(yǔ)句刪除看看效果。

論壇徽章:
4
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-10-10 06:20:00每日論壇發(fā)貼之星
日期:2015-10-10 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-10-11 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-10-25 06:20:00
19 [報(bào)告]
發(fā)表于 2015-10-25 21:53 |只看該作者
MMMIX 發(fā)表于 2015-10-23 20:49
回復(fù) 13# robinhappiness


我上傳一個(gè)input文件和一個(gè)output文件圖片來(lái)說(shuō)明一下。
文件內(nèi)容中,每條記錄的長(zhǎng)度都占50byte,在每行的第51byte位置開(kāi)始換行。
除了第一行和最后一行之外的第2byte位置的值需要設(shè)定到第25byte位置。
處理前后的文件大小不能夠有差異。文件中含有半角,全角的字符,數(shù)字,空格等。

input.txt:

1sadw2we21                                       
1F 123456  ー-  qqq  00      00000000            
2G 7漢012 -  -  qq  00      00000000            
3V 1字456   /  q q  00      00000000            
4H 234567 1 2 3  q 00      00000000            
0900000000                                       


output.txt:

1sadw2we21                                       
1F 123456  ー-  qqq  00F     00000000            
2G 7漢012 -  -  qq  00G     00000000            
3V 1字456   /  q q  00V     00000000            
4H 234567 1 2 3  q 00H     00000000            
0900000000                                       

論壇徽章:
0
20 [報(bào)告]
發(fā)表于 2015-10-26 17:32 |只看該作者
本帖最后由 xie3ks 于 2015-10-26 17:35 編輯
  1. #!/usr/bin/perl
  2. use warnings;
  3. use strict;

  4. while(<DATA>)
  5. {
  6.     my @bytes_value=split //;

  7.     $bytes_value[10]=$bytes_value[1] if defined $bytes_value[10];
  8.     print join "",@bytes_value;
  9. }

  10. __DATA__
  11. 1F 123456  T qqqqq zzz              
  12. 2G 7測(cè)012 T qqqqq zzz
  13. 3V 1試456 T qqqqq zzz
  14. 4H 234567 T qqqqq zzz
  15. 90000000
復(fù)制代碼
12
返回列表 發(fā)新帖
您需要登錄后才可以回帖 登錄 | 注冊(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)專(zhuān)區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP