2011-04-19 53 views
0

我的數據文件應該是在400行的標籤行結尾行結尾。不幸的是,許多行上出現了一些隨機的EOL。Bash腳本刪除偶爾的字符和eols

我會很感激有關如何處理該文件刪除隨機EOLS(但在每行結束後離開「真正的」 EOL提示。

非常感謝!

+0

我認爲你應該更具體一點; 「由400個標籤分隔」使得聽起來好像每個列之間應該有400個標籤:我認爲這不是你的意思。每行400個製表符分隔的列,並且一些行錯誤地縮短了? – unwind 2011-04-19 18:02:58

回答

0

你可以使用像TR做你想要什麼,例如:

[[email protected] dmc]# echo -e "\na\nbcd" 

a 
bcd 
[[email protected] dmc]# echo -e "\na\nbcd" | tr -d '\n' 
abcd[[email protected] dmc]# 

那麼所有你需要做的是在\ n在你行的末尾加那麼它在正確的位置

的EOL
+0

這會刪除最後一個換行符。 – drysdam 2011-04-19 18:12:56

+0

感謝大家的建議 - 非常感謝! – Tanuojin 2011-04-20 07:22:41

0

你可以使用grep來做到這一點,但你必須經過一些工作才能將TAB字符加入其中。我所做的只是現在是創造一個看起來像這樣的模式文件:

\([^ ]*  \)\{3,\} 

其中那些大的白色空間是實際的標籤(我用emacs的,做了(什麼光標位置),以確保)。

此特定模式查找「字段」爲「零個或多個非製表符分隔符後跟製表符分隔符」的3個或更多字段。實際上,你想壞線,使扭轉的grep:

grep -vf <patternfile> <datafile> 

現在遍歷這些行並應用tr -d '\n'每個。用新的換行符回顯結果,就完成了。 (我把這個完全放在一個腳本中,但我有時間限制,我不知道你的文件看起來像什麼。)

+0

你可以通過'^ v '(ctrl + v,tab鍵)獲得一個標籤 – Daenyth 2011-04-19 19:25:18

+0

是的,我在閱讀時嘗試這樣做。但它並不適合我。 – drysdam 2011-04-19 21:21:53