2010-03-16 51 views
0

我有很多行的一個巨大的文本文件結束後想:替代詞

a 23232 23232 545 3434 DATA4545454_1 454 4646466 3434 3567 
a 23232 23267632 545 3436764 DATA454545567564__1 454 464675466 3434 3 
a 232676732 232676732 545 3434 DATA4545454_1 454 46457566466 3457534 35675 

在所有的人,我想擺脫一切是DATA *之後,所以我得到:

a 23232 23232 545 3434 DATA4545454_1 
a 23232 23267632 545 3436764 DATA454545567564__1 
a 232676732 232676732 545 3434 DATA4545454_1 

我知道它可以用SED進行,並嘗試不同的組合,但我沒有得到結果,你知道怎麼樣?

由於

+0

如果你的最後一個問題的答案不是你想要的,你可能應該編輯這個問題來問你的意思,而不是發佈一個新的問題。 – Cascabel

+0

嗨jefromi,是的,你是對的。抱歉,但我現在處於截止日期並且有點困惑,稍後我會照顧您的幫助。謝謝 – flow

回答

2
sed 's/\(DATA[^ ]*\).*/\1/' 
0

它匹配正則表達式是

^(.+ DATA[0-9_]+).*$ 

應與$1代替。

更新

這應該是:替換\1

+0

注意:這是一個perl的答案,而不是sed的答案。 (Sed可以使用擴展正則表達式,這會使它匹配,但是它爲捕獲的組使用'1'而不是'$ 1')。 – Cascabel

0

所有的 「數據」 出現在列6.如果它像在整個,後來乾脆

$ cut -d" " -f1-6 file 
a 23232 23232 545 3434 DATA4545454_1 
a 23232 23267632 545 3436764 DATA454545567564__1 
a 232676732 232676732 545 3434 DATA4545454_1 

或者用grep

$ grep -Eo ".*DATA.[^ ]* " file 
a 23232 23232 545 3434 DATA4545454_1 
a 23232 23267632 545 3436764 DATA454545567564__1 
a 232676732 232676732 545 3434 DATA4545454_1 
+0

由於某些原因,grep不能使用-o選項。 'grep -Eo「。* DATA。[^] *」test_oq grep:illegal option - o' – Vijay

+0

你有GNU grep嗎? – ghostdog74

0
sed -r 's/(.*_1)(.*)/\1/' file 
0
sed 's/\(.* DATA.*_1\)\(.*\)/\1/' file