2010-03-16 45 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