Как я печатаю предыдущее определенное слово

Мне назвали файл city.txt, который содержит следующие записи.

Los Santos
San Fierro
Las Venturas

Я хочу распечатать слово прежде r в San Fierro, таким образом, вывод был бы похож на это.

San Fier

Как это может быть сделано?

3
задан 28 November 2016 в 12:57

4 ответа

Распечатать все до последнего r:

grep -o '^.*r' city.txt

Для печати всего до первого r:

grep r city.txt | grep -o '^[^r]*'

-o только печать часть соответствия каждой строки. [^r] соответствия что-либо кроме r.

, Если Вы только хотите первое соответствие, добавьте -m1 к последнему grep в каждом случае.

2
ответ дан 1 December 2019 в 13:12

Покажите все прежде r в каждой строке (строки, который не делает содержит , r будет проигнорирован):

sub@debianmin:~$ grep r  city.txt | cut -f 1 -d r
San Fie
Las Ventu
<час>

, Если Вы только хотите San Fie использование эта команда:

sub@debianmin:~$ grep r  city.txt | cut -f 1 -d r | head -n 1
San Fie
2
ответ дан 1 December 2019 в 13:12

В grep, с помощью предвидения Perl:

grep -Po '.*(?=r)'

Это ищет строку, сопровождаемую r, но r саму не подобран.

1
ответ дан 1 December 2019 в 13:12

Распечатать часть прежде в последний раз r, и распечатайте те строки только:

  • grep с PCRE:

    grep -Po '.*(?=r)'
    

    .* соответствия жадно и нулевая ширина положительный предварительный шаблон (?=r) удостоверяется, что соответствие сопровождается r

  • С sed:

    sed -n 's/r[^r]*$//p'
    

    r[^r]*$ соответствует части от в последний раз r до конца, и замененный пустым указателем.

  • С awk:

    awk '/r/ {sub("r[^r]*$", ""); print}'
    

    То же как sedодин, /r/ удостоверяется, что мы воздействуем только на строки, содержащие r

Пример:

% cat file.txt                                     
Los Santos
San Fierro
Las Venturas

% grep -Po '.*(?=r)' city.txt                
San Fier
Las Ventu

% sed -n 's/r[^r]*$//p' city.txt                   
San Fier
Las Ventu

% awk '/r/ {sub("r[^r]*$", ""); print}' city.txt
San Fier
Las Ventu
4
ответ дан 1 December 2019 в 13:12

Другие вопросы по тегам:

Похожие вопросы: