2012-03-08 51 views
0

我在看教程關於使用上的MAC的傢伙用它Unix實用工具的文件我有一個Windows筆記本電腦,所以我下載了Gnuwin32 Package 隨後而來的一部分,其中i想以一個換行符一個文件來替換任何非字母字符「\ n」改變每一個非字母字符爲 n使用UNIX實用程序

本教程中的命令行是:

tr -sc 'A-Za-z' '\n' < filename.txt |less 

它和他一起工作,但是當我嘗試它,它把一個singleqoute「 '「字符後的字符

'S'h'a'k'e's'p'e'a'r'e'T'H'E'T'E'M'P'E'S'T'f'r'o'm'O'n'l'i'n'e'L'i'b'r'a'r'y'o'f'L'i'b'e'r't'y'h't't'p'o'l'l'l'i'b'e'r't'y'f'u'n'd'o'r'g' 

我試圖

tr -sc "A-Za-z" "\n" < filename.txt |less 

它增加了一個新的行中的每個字符之後

n 
e 
L 
i 
b 
r 
a 

我試圖除去稱讚選項,並在正則表達式

tr "[^A-Za-z]" "\n" < filename.txt |less 

的添加^結果每letter更換一個newline

問題是否在GNUwin32的UNIX實用程序中的命令行選項與其他的不同?並執行把單引號像「AZ」之間的差值大於「AZ」 如果是的話這將是一個換行符替換每個非字母字符最好的答案,比試驗失敗等上面

the source of the text i was trying on

正則表達式
+0

@shellter謝謝:),其實我的學習,我可以搜索的另一種選擇,但我想我有興趣,使其作品使用tr命令。再次感謝你 – 2012-03-08 19:49:45

+0

如果你在每封信後都有單引號''',那麼顯然你會在每封信後得到一個新的行,因爲你用'\ n'替換每一個不是字母。 – anubhava 2012-03-08 19:51:41

+0

@anubhava你可以查看我使用的文本@問題結束 每個字母后面都沒有逗號 – 2012-03-08 19:54:13

回答

0

嗯..

$ tr -sc '[A-Za-z]' "\n" < getCokeInfo_viaFinger_cmu.awk 
bin 
gawk 
f 
BEGIN 
wisc 
edu 
finger 

.... 

請注意,我用的焦炭類([A-Za-z])。也許你的tr也需要。

我希望這會有所幫助。

+0

不能與我一起工作,它會在每個字符之後放置一個換行符,另一個值得注意的地方是它會移除非字母字符 – 2012-03-08 19:53:57

+0

您是否真的需要字符類? _c-c_來自POSIX,並且應該到處工作(至少對於POSIX語言環境,其他語言環境由於顯而易見的原因具有未定義的行爲)。 – ninjalj 2012-03-08 19:55:29

+0

當我將它們排除在外時,我收到了與O.P.相同的錯誤消息。祝你們好運! – shellter 2012-03-08 19:56:27

1

我測試你的例子在我的tr --version(GNU的coreutils)8.5,並使用單或雙引號

1)沒有什麼區別 2)看起來是沒有辦法用否定字符^

當你寫[^A-Za-z]所有這些字符按原文:

echo "abc abd [hh] d^o 1976" | tr '[^A-Za-z]' '.' 

或用雙引號

echo "abc abd [hh] d^o 1976" | tr "[^A-Za-z]" '.' 

產生以下輸出

... ... .... ... 1976 

這證明所有aphabetic字符,光標和方括號已被逐字處理和更換。

這使我們得出的結論是,要用非字母字符分割,必須使用-c,範圍爲'A-Za-z',與第一個示例中的完全相同。

0
cat file.txt | sed -re 's/[^a-zA-Z]/\n/g' 

;)

相關問題