對於實施例的輸入文件是如何替換串的中間在Perl語言文件
ID Name Dept_id
1 aaa 1
2 ddd 1
3 sss 2
它是製表符分隔的文件
的輸出會像
ID Name Dept_id
1 aaa 1.1
2 ddd 2.1
3 sss 3.2
任何人都可以幫助我?
對於實施例的輸入文件是如何替換串的中間在Perl語言文件
ID Name Dept_id
1 aaa 1
2 ddd 1
3 sss 2
它是製表符分隔的文件
的輸出會像
ID Name Dept_id
1 aaa 1.1
2 ddd 2.1
3 sss 3.2
任何人都可以幫助我?
您要添加的dept_id
的ID
數。所以迭代文件的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
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
(保留)表示我們不希望改變任何東西到左邊。然後我們用第一個捕獲的字符串替換它,一個句點.
和第二個捕獲的字符串。