我試圖將大量文件從純文本佈局轉換爲CSV。文件中的一個的前幾行是這樣的:需要sed:在保存空間前加上每行
SLICE AT X= -0.25
ELEM NO XI-COORD INWARD-NORMAL
1 0 0.000 0.000 0.000 0.000 0.000 0.000
2 0 0.000 0.000 0.000 0.000 0.000 0.000
3 0 0.000 0.000 0.000 0.000 0.000 0.000
在第一行(-0.25)給出的數目要被插入在每個數據行的參數。由於這個數字在數百個文件中各有不同,因此我無法將其作爲文字提供。
我已經寫了下面的sed程序:
# Reduce line 1 to just a number.
s/SLICE AT X= //
# Store line 1 in hold space.
1h
# Clear the other header line.
2d
# Insert X coordinate from hold space.
/^\ \{1,\}/G
# Separate values with commas.
s/\ \{1,\}/,/g
它得到儘可能產生這樣的:
-0.25
,1,0,0.000,0.000,0.000,0.000,0.000,0.000
-0.25
,2,0,0.000,0.000,0.000,0.000,0.000,0.000
-0.25
,3,0,0.000,0.000,0.000,0.000,0.000,0.000
-0.25
,4,0,0.000,0.000,0.000,0.000,0.000,0.000
-0.25
注意輸出的第一行是原來的第一道防線。
任何人都可以幫助我得到粘貼的數字到每一行的開始?
由於提前,
羅斯
感謝, 這確實與所提供的摘錄了偉大的工作,但運行到與多個文件作爲輸入問題。雖然每個文件都使用相同的佈局,但第二行會隱藏到輸出中。我想知道這是否可能是由於絕對的線路位置? – 2009-08-10 15:49:01
$。在使用<>時不會在新文件上重置爲零。請參閱perlfunc文檔中的eof – 2009-08-10 16:13:31
謝謝。我最終只是將perl調用包裝在一個小小的shell腳本中,而這個腳本完成了。感謝您的側面思考。 – 2009-08-11 10:22:42