Unix Sed, чтобы получить строки из последнего вхождения данного слова - PullRequest
2 голосов
/ 08 октября 2010

Я хочу получить строки из файла из строки, которая содержит последнее вхождение данного слова.

Ex:

Правда, было несколько
Изменения в сюжете. В оригинале
Кейн пытался купить высокий политический
офис для себя. В новой версии
он просто ставит политиков на свою зарплату.

Если я дам "В", тогда мне нужно

офис для себя. В новой версии
он просто ставит политиков на свою зарплату.

Ответы [ 4 ]

1 голос
/ 08 октября 2010

Попробуйте:

grep 'yourWord' yourFile.txt | tail -n1

Или с sed:

sed -n '/yourWord/{$p}' yourFile.txt
0 голосов
/ 01 октября 2012

Я могу напечатать только 4-ю строку и конец строки

Моя команда

sed -n '4, $ p' file

0 голосов
/ 08 октября 2010

Это должно работать:

В качестве однострочного:

patt=In
sed -nr "/$patt/!b;:a;\$!N;/\n.*$patt/{h;s/\n[^\n]*\$//;g;s/^.*\n//};\$!ba;p" inputfile

Если ваш sed требует -e:

patt=In
sed -nr -e "/$patt/!b" -e ":a" -e "\$!N" -e "/\n.*$patt/{h" -e "s/\n[^\n]*\$//" -e "g" -e "s/^.*\n//}" -e "\$!ba" -e "p" inputfile

В отдельных строках:

patt=In
sed -nr "
    /$patt/!b
    :a
    \$!N
    /\n.*$patt/{
    h
    s/\n[^\n]*\$//
    g
    s/^.*\n//
    }
    \$!ba
    p' inputfile
0 голосов
/ 08 октября 2010
$ word="In"
$ awk -vw="$word" '{s=s$0}END{ m=split(s,str,w); print w str[m]}' file
In the new version, he just puts politicians on his payroll.

Я не понимаю, почему существует "офис для себя". хотя.

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