Как включить все перед Colon в Sed/Grep/...?

Я думаю, что вам лучше всего с наименьшими усилиями использовать связанные с видео функции терминальной программы mps-youtube. Посмотрите здесь: https://github.com/mps-youtube/mps-youtube.

Например:

Если вы хотите посмотреть несколько видео, посвящённых Крису Корнеллу, и у вас установлен и запущен mps-youtube, вы можете использовать следующую команду, чтобы установить для воспроизведения видео значение «true» (в противном случае вы только получить аудио)

set show_video true

Затем найдите видео или плейлист, который вы хотите воспроизвести:

Для видео:

.Chris Cornell Tribute

Затем выберите видео, к которому вы хотите добавить похожие видео:

r 1

(где 1 – это видео, которое вы хотите видео для)

Затем просто введите диапазон видео, которые вы хотите воспроизвести.

1-50

(будут воспроизводиться все связанные видео, до номера 50.)

Вам также может понадобиться установить видеоплеер по умолчанию на mpv, так как я думаю, что программа по умолчанию использует mPlayer. Я понимаю, что это добавляет в микс совершенно отдельную программу, но она действительно использует технологию, о которой вы спрашиваете, оставляя вас в терминале.

0
20.04.2016, 19:36
5 ответов

Если бы вы потратили время и прочитали руководство по grep , вы бы нашли опцию l

-l, --files-with-matches
       Suppress normal output; instead print the name of each input file from which  output would normally
       have been printed. The scanning will stop on the first match.

Ваша команда find выглядела бы так

find . -name "*.tex" -exec grep -il "agent" {} \; | less

или быстрее

find . -name "*.tex" -exec grep -il "agent" {} + | less
2
28.01.2020, 02:13
$ abc="./BitTorrentSync/Gyn/1.12.2015.tex:  Agents in young <40yr?"
$ pqr=$(echo "$abc" | sed -e 's/:.*//')
$ echo $pqr
./BitTorrentSync/Gyn/1.12.2015.tex

Это работает для меня.

0
28.01.2020, 02:13

Если вы настроили выполнение этого в sed и сопоставление с tex: вместо только : , вы также можете попробовать:

echo "./BitTorrentSync/Gyn/1.12.2015.tex:  Agents in young <40yr?" | sed 's/\(^.*tex\):.*/\1/'
2
28.01.2020, 02:13
echo "bla-bla-bla:ololo-testo" |sed 's/:.*$//'  
bla-bla-bla
1
28.01.2020, 02:13
  1. sed работает на stdin, а не на своих аргументах, если только вы не задаете ему имена файлов.
  2. С помощью sed проще указать, что вы хотите удалить, чем то, что вы хотите оставить.

Вместо

sed -n 's/.*tex:/[preventColonFromResult]/p' ./BitTorrentSync/Gyn/1.12.2015.tex:  Agents in young <40yr?

возможно, вы имели в виду

printf '%s\n' './BitTorrentSync/Gyn/1.12.2015.tex:  Agents in young <40yr?' | sed 's/:.*//'

Но для данного конкретного случая вы можете с тем же успехом использовать одноцелевой инструмент, а именно cut:

printf '%s\n' './BitTorrentSync/Gyn/1.12.2015.tex:  Agents in young <40yr?' | cut -d: -f1
5
28.01.2020, 02:13

Теги

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