用perl實現兩個文字檔案交叉合併

2021-07-05 01:50:34 字數 1210 閱讀 6959

perl語言被某些愛好者稱作「unix 中的王牌工具」。確實,和c/c++相比,perl語言特別是在處理

文字和檔案方面,有一些獨到的優勢,在處理某些文字檔案任務時,真的是很方便的。

比如下面這個問題:

現在兩個文字檔案a.txt和b.txt,內容如下:

a.txt:ab

cdef

gb.txt:12

3456

7我怎樣能生成乙個新檔案(c.txt),內容如下:

c.txt:a1

b2c3

d4e5

f6g7

簡單說就是要完成兩個文字檔案的交叉合併。

如果想用c/c++實現,實現應該是比較複雜的,需要使用不少字串處理函式,以及檔案指標操作,所以我個人認為還是比較複雜的。

如果想比較簡單地解決這種問題,就需要找到一種「處理字串和文字方面比較有優勢」的語言,在這方面,被稱為「軟體晶元」的perl語言就屬於其中之一,只需要知道它怎麼控制檔案控制代碼,就能個比較簡單地實現了,不多說了,直接看實現**:

#! /usr/bin/perl -w #本地的perl編譯器路徑

use strict; #開啟語法檢測

use 5.010; #使用5.10版本

my $name_1 = $argv[0];

my $name_2 = $argv[1]; #得到命令列引數

#open the ori perlterm script

open txt_1, "<$name_1";

open txt_2, "<$name_2"; #得到兩個檔案控制代碼

my @a = ;

my @b = ; #得到兩個檔案內容

my $line_b = @b; #b.txt檔案內容傳遞

my $count_line = 0; #初始化檔案行數

open my $newfile, ">", "c.txt"; #建立公升成的新檔案和控制代碼

foreach (@a)

}close $newfile or warn "can not close the file";#合併結束,關閉

儲存為merge.pl並退出,這樣就ok啦!執行結果如下:

a.txt:ab

cdef

gb.txt:12

3456

7c.txt:a1

b2c3

d4e5

f6g7

不到30行,就搞定了。

python 實現兩個文字檔案內容去重

實現兩個文字內容去重,輸出兩個文字不重複的結果 兩個測試文字內容如下 1.txt中內容為 123 4567 82.txt中內容為 123 4567 891011 1213 1415 分別讀取兩個文字的內容讀取1.txt的內容,具體實現如下 str1 file 1 open 1.txt r encod...

兩個文字檔案某一單列的交集

1.txt有一列,不都在2.txt裡 2.txt有幾列,第一列的值裡可能有1.txt的值,中英文大小寫各種符號都可能有除了 列分隔符是 awk f beginnrfnrnr fnr 1.txt 2.txt 解釋如下 f 指定分隔符 begin語句忽略了英文大小寫 nr fnr意味著在讀第乙個檔案。n...

用python清洗文字檔案

對此,首先需要熟悉一些python基本的字串操作。在python中,字串用引號 或 來表示,並可通過類似陣列的方式進行索引,對此我們先建立乙個字串 test txt檔案csdn.com清csd.com洗csdn.com test 2 tx 我們要做的就是刪除字串中所有的 csdn.com pytho...