2013-12-05 5 views
0

Что было бы командой grep, чтобы получить все в строке после матча? Например, на пути к файлу:Grep целая строка после слова

/home/usr/we/This/is/the/file/path 

и я хочу выход быть

/we/This/is/the/File/Path 

Совпадение/мы, как регулярное выражение.

ответ

2

grep -o делает то, что вы хотите.

grep -o '/we.*' 
+1

(А почему он делает то, что ОП хочет, опцию '-o' печатает только согласующий часть линии, а не всей линии,'/we' - желаемое начало матча, а '. *' соответствует любому количеству символов, заставляющих матч включать все после '/ we'.) – Arkku

+0

@Arkku благодарит вас за разъяснение. :) Хотя я склонен думать, что OP будет легко искать вариант в документации 'grep'. – user2719058

+0

Это сработало и было самым простым способом. Благодарю. – and0rsk

1
YourInput | sed 's|/home/usr\(/we.*\)|\1|' 

при условии, что всегда (и только), начиная с/дома/USR еще

YourInput | sed -n 's|^.*\(/we.*\)||p' 

возвращение только линия (s), если/мы и удалить текст, прежде чем /we

+0

Не использует '/ we' в качестве триггера поиска по запросу OP – Jotne

+0

извините, я изменяю ответ – NeronLeVelu

1

OP любит использовать we в качестве триггера. Использование awk

awk -F/ '{for (i=1;i<=NF;i++) {if ($i~/we/) f=1;if (f) printf "/%s",$i}print ""}' file 
/we/This/is/the/file/path 

Использование gnu awk

awk '{print gensub(/.*(\/we)/,"\\1","g")}' file 
/we/This/is/the/file/path 
Смежные вопросы