2017-04-06 52 views
0

我一直在試圖從具有行像下方,並具有分隔符爲分號的文本文件閱讀:遇到分隔符,直到

Sun rises 
in the east 
    and; 
sets in the 
west 
; 

我想讀從分隔符的數據在單單獨的記錄分隔符像下面 變量名

1 Sun rises in the east and 
2 sets in the west 

我已經嘗試了幾乎所有可用infile選項無濟於事的選項。是否可以像上面那樣閱讀?怎麼做?任何線索/幫助將不勝感激。

+0

後你已經試過 – Reeza

+0

已經使用LRECL,LINESIZE嘗試,@@和所有的,沒有他們被給予正確的結果,已經嘗試這麼多東西。 – NEOmen

+0

它看起來像你,如果多個空間被壓縮到一個不在乎?因此,東部和東部將變成東部和東部。如果是這樣,那麼只需逐字閱讀,並在單詞包含分隔符時停止。 – Tom

回答

1

recfm=n是告訴SAS沒有「換行符」的方法。所以:

data want; 
    infile "c:\temp\test.txt" recfm=n dsd dlm=';'; 
    length text $1024; 
    input text $; 
run; 

注意,換行符將被讀取只是一個兩個字符,所以如果你想刪除這些字符,你可以使用compressc選項刪除控制字符(包括LF/FF)。

+0

感謝Joe.This幫助。使用壓縮,除去所期望的字符,以及,我使用tranward移除「0D」 x和「0A」×。 – NEOmen

+0

當然是一個合理的解決方案。 'transtrn'可能是用於這一目的的最佳翻譯,各種功能,但任何人會做。 – Joe

0

讀它一字一句,並連接成更長的線。

data want ; 
    infile mydat end=eof ; 
    length word $200 line $2000 ; 
    drop word; 
    do while (^eof and ^index(word,';')); 
    input word @ ; 
    line = catx(' ',line,compress(word,';')); 
    end; 
    if _n_ > 1 or line ne ' ' then output; 
run; 
+0

謝謝湯姆,請你抽出時間。這也是一個很好的解決方案。 – NEOmen