2013-03-11 41 views
0

我可以在python中執行以下操作來清理並去除不需要的空格,但是可以通過終端通過其他方式完成,例如sedgrep或其他方法?如何爲文本文件中的每一行做str.strip()? Unix

outfile = open('textstripped.txt','w+','utf8') 
for i in open('textfile.txt','r','utf8'): 
    print>>outfile, i.strip() 
+0

它可以,但你想解決什麼問題? – 2013-03-11 03:53:28

+0

我只是試圖去除文本文件中的所有行,因爲我的註釋器總是鍵入多餘的尾部空格,有時也會標題多餘的空格。 – alvas 2013-03-11 03:56:33

回答

1
$ cat input.txt | sed 's/^[ \t]*//;s/[ \t]*$//' > output.txt 

這擺脫了開頭和結尾空格的..

編輯:sed -e "s/^[ \t]+//; s/[ \t]+$//" -i .bk input.txt

這確實到位文件編輯,並保存備份input.txt.bk (並且節省了一些建議的過程)

+0

請原諒我的正則表達式noobiness,你能解釋一下sed嗎? '^ [\ t] *'表示標題空格,'[\ t] * $'表示空格後​​面的空格是正確的?會不會''\ s \ t] *'和'[\ t] *'做同樣的事情? – alvas 2013-03-11 04:00:43

+0

'\ s'不被Sed的所有版本識別 – 2013-03-11 04:03:14

+0

@ 2er0'[\ s] *'應該能夠替換'[\ t] *'。但是,以前的表單可能存在可移植性問題,具體取決於您使用的是哪個sed。例如在我的Mac筆記本電腦上,我必須使用'[\ t] *' – zzk 2013-03-11 04:03:36

1

sed -E "s/(^[ \t]+|[ \t]+$)//" <input> output

或者,如果你有一個兼容的GNU版本SED的:

sed -E "s/^\s+|\s+$//g" <in> out

如果你有一個蘋果,我推薦讓homebrew和安裝gnu-sed。 然後,alias sed=gsed

2

在命令行中使用perl

perl -lpe 's/^\s+//; s/\s+$//' file.txt > stripped.txt

相關問題