2016-03-16 29 views

回答

2

您要添加的dept_idID數。所以迭代文件的while循環。

然後使用chomp刪除換行符。

split然後將每一行到由空間或製表符分隔的陣列,然後通過使用數組索引打印陣列。

$ar[0]持有的ID。所以用$ar[0].$ar[2]

open my $handler, "<","file.txt"; 
my $first = <$handler>; 
print "$first"; 
while (<$handler>) 
{ 
    chomp; 
    my @ar = split(/\s+/); 
    print "$ar[0]\t$ar[1]\t$ar[0].$ar[2]\n"; 

} 

打印或者乾脆試試這個襯墊

-n爲循環輸入文件。然後$.告訴當前行號。

然後在這裏我用的圖案爲你的情況相匹配。

我創建了一個名爲$on $tw $th的臨時列表。 $on持有ID,$tw持有名稱,$th持有Dept_id。然後,它會通過印刷"$on\t$tw\t$on.$th"

perl -ne 'if($. == 1){ print "$_"; next;} ($on,$tw,$th)= $_ =~m/(\w+)/g; print "$on\t$tw\t$on.$th\n";' file.txt 
3
perl -pe's/^(\d+)\s\S+\s\K(\d+)/$1.$2/' input.txt > output.txt 

給在Perl代碼的程序看起來像這樣:

while (<>) { 
    s/^(\d+)\s\S+\s\K(\d+)/$1.$2/; 
} continue { 
    print; 
} 

取代正則表達式查找開始與一個或多個數字\d+線,並用圓括號捕獲它們,接着是空白\s,非空白\S+,再次是空格,後面跟着數字,我們也捕獲它們。 \K(保留)表示我們不希望改變任何東西到左邊。然後我們用第一個捕獲的字符串替換它,一個句點.和第二個捕獲的字符串。

相關問題