我有一个巨大的文本文件,其中包含许多行:
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 :(得分: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