заменить строку rsubmit на * rsubmit - PullRequest
0 голосов
/ 05 апреля 2011

У меня есть текстовые файлы с такими строками:

--------------------------  
.... 
... rsubmit;  
........  
........ endrsubmit;  
.......  
...... rsubmit ;  
................  
....... endrsubmit ;  
..........  
-----------------------------  

I want to replace  
all 'rsubmit;'     with '* rsubmit;'  
all 'rsubmit ;'    with '* rsubmit ;'  
all 'endrsubmit;'  with '* endrsubmit;'  
all 'endrsubmit ;' with '* endrsubmit ;'  

Короче говоря, просто поставьте звездочку в начале.

Я пытался использовать sed 's / rsubmit \; / \ * rsubmit \; / g'
, но этот метод не может позаботиться о тех 'endrsubmit'

Может любойпомочь в этом?

Спасибо
Элвин Сиу

Ответы [ 2 ]

1 голос
/ 05 апреля 2011

Попробуйте это

sed 's/\(end\)\?rsubmit/* &/' 
0 голосов
/ 05 апреля 2011

Рубин (1,9 +)

$ ruby -ne 'print $_.gsub(/(.[^ \t]*rsubmit)/,"*\\1")' file
--------------------------
....
...* rsubmit;
........
........* endrsubmit;
.......
......* rsubmit ;
................
.......* endrsubmit ;
..........
-----------------------------

или awk

$ awk '{for(i=1;i<=NF;i++) { if ($i~/rsubmit/) { $i="* "$i } } }1' file
...