在这个词结束后换人

时间:2010-03-16 16:30:51

标签: bash sed

我有一个巨大的文本文件,其中包含许多行:

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完成并尝试不同的组合,但我没有得到结果,你知道怎么做?

由于

5 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

匹配的正则表达式是

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

应替换为$1

更新

应该是:替换为\1

答案 2 :(得分: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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

sed 's/\(.* DATA.*_1\)\(.*\)/\1/'  file
相关问题