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

ответ

0

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

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

, который должен быть заменен $1.

Update

Это должно быть: заменены \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: незаконный вариант - o' – Vijay

+0

У вас есть GNU grep? – ghostdog74

Смежные вопросы