聲明:我是perl腳本編程的新手,這部分是學習練習(但仍然是工作項目)。另外,我對shell腳本有更強的把握,所以我的示例可能會以這種思維模式進行格式化(但我想用perl創建它們)。對不起提前爲我的冗長,我要確保我在獲得跨越使用Perl解析文件並將特定值插入到數據庫中
我有一個文本文件(參考指南)我的觀點至少稍微清楚,是一個Word文檔轉換爲文本,然後從Windows交換在Notepad ++中轉換爲UNIX格式。該文件是統一的,文件的每個部分都有相同的字段/格式/表格。
我打算做的基本方法是抓住每個部分,用唯一的批處理作業名稱作爲鍵,並將所有值放入數據庫(或者可能只是一個excel文件),以便可以搜索所有字段/爲每個工作編輯比在word文件中更容易,並且稍後可能創建一個web界面。
所以我想要做的是做這樣的事情抓住每個部分:
sed -n '/job_name_1_regex/,/job_name_2_regex/' file.txt
- 怎麼會變成這樣一個Perl腳本中被格式化?
(搶在總的部分,然後從那裏再打破它)
要閱讀腳本文件我有open FORMAT_FILE, 'test_format.txt';
然後用foreach $line (<FORMAT_FILE>)
解析由行的文件行。 - 有沒有更好的方法?
我的下一個問題是,由於我從表一個Word文檔,它看起來轉化,如:
Table Heading 1 Table Heading 2 Heading 1/Value 1 Heading 2/Value 1 Heading 1/Value 2 Heading 2/Value 2
但文本文件,它看起來像:
Table Heading 1 Table Heading 2
Heading 1/Value 1
Heading 1/Value 2
Heading 2/Value 1
Heading 2/Value 2
所以我想將「標題1」和「標題2」作爲列名稱,然後將相應的值放在那裏。我只是不確定如何從文本文件中獲取與標題相關的值。標題1的值始終是標題1加2的行號(標題1,標題2,標題1的值)。我知道這可以很容易地在awk/sed中完成,只是不知道如何解決裏面的 perl腳本。
---編輯---
爲此,我想在做一個數組類似的:
my @heading1 = ($value1, $value2, etc.)
my @heading2 = ($value1, $value2, etc.)
我只需要能夠正確的價值觀和標題關聯在一起。因此,標題1 = 標題2後面的行(其值開始)。 就像說(殼):
x=$(cat file.txt | grep -n "Heading 1" | cut -d":" -f1)
- 得到行「標題1」是在文件中
((x = x+2))
- 增加2到線(其中的值將開始)
sed -n "$x,$last_line_of_values p" file.txt
- 從文件打印值。從那裏開始,到最後一個行TXT(我會明白這一點,在一些點在此之前)
這是超級黑客的時刻在一起,試圖闡述什麼,我想做的事情。 ..let我知道,如果它清除它一點點...
---/---編輯
後,我有所有的正確的價值觀和這樣的,它連接到一個數據庫可能是一個問題,好吧,我還沒有開始考慮perl與數據庫交互的方式。
對不起,如果這是一個有點scatterbrained ...它仍然沒有完全形成在我的腦海。
感謝WAZ,我更新了一篇關於試圖更好地解釋它的表。 – Sean 2010-04-22 17:40:10