Подстановка после конца слова - PullRequest
0 голосов
/ 16 марта 2010

У меня огромный текстовый файл с множеством строк, таких как:

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 ]

2 голосов
/ 16 марта 2010
sed 's/\(DATA[^ ]*\).*/\1/'
0 голосов
/ 17 марта 2010
sed 's/\(.* DATA.*_1\)\(.*\)/\1/'  file
0 голосов
/ 17 марта 2010
sed -r 's/(.*_1)(.*)/\1/'  file 
0 голосов
/ 16 марта 2010

все ваши «ДАННЫЕ» появляются в столбце 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 голосов
/ 16 марта 2010

Регулярное выражение, которое соответствует

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

, который следует заменить на $1.

Обновление

Это должно быть: заменено на \1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...