Как “$” работает в “something$ поиска способного кэша”

Вы попробовали его другими avi файлами? Аудиотрек файла мог бы быть длиннее, чем видеотрек (просто предположение).

Вы попробовали-t опцию?

   -t duration
       Restrict the transcoded/captured video sequence to the duration
       specified in seconds.  "hh:mm:ss[.xxx]" syntax is also supported.

Можно хотеть попытаться установить аудио поток битов, просачиваются ffmpeg. Я никогда не пробовал его, но фильтр "remove_extra" звучит как обещание ;)

   -absf bitstream_filter
       Bitstream filters available are "dump_extra", "remove_extra",
       "noise", "mp3comp", "mp3decomp".

Вы рассмотрели использование команды как ExifTool для просмотра информации о файле и установке опций соответственно (возможно, даже анализирующий вывод и автоматизирующий его в сценарии)?

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

Если Вы получаете отсортированный, отправьте то, что Вы сделали, потому что я не удовлетворен очевидными методами обработки 1000-х видеофайлов, которые я должен демультиплексировать. Я сделал сценарий подобным Вашему, однако я хочу получить самые лучшие качественные звуковые файлы, я могу, не тратя впустую пространства. Мои опции транскодирования будут динамичными наверняка, таким образом, мне будет нужно что-то немного более сложное, чем один лайнер.

4
20.10.2018, 19:33
2 ответа

От apt-cache страница справочника:

search regex...
   search performs a full text search on all available package lists for the 
   POSIX regex pattern given, see regex(7). It searches the package names 
   and the descriptions for an occurrence of the regular expression and 
   prints out the package name and the short description, including virtual 
   package names. If --full is given then output identical to show is 
   produced for each matched package, and if --names-only is given then the 
   long description is not searched, only the package name is.

   Separate arguments can be used to specify multiple search patterns that 
   are and'ed together.

Заметьте, что это указывает regex(7). Таким образом, когда Вы говорите apt-cache для поиска чего-то, Вы предоставляете ему регулярное выражение. $ в средствах regex, что Вы хотите соответствовать, привязанный в конец строк.

Таким образом, если мы, дал значение desktop$ мы были бы только строки совпадения где desktop был в конце строк, таких как:

  • это - рабочий стол
  • это - очень длинная строка с рабочим столом

Но это не было бы строки совпадения, такие как:

  • это является настольным в окне
  • это - другой рабочий стол в окне

В Вашем случае строка desktop в описании xjig, хотя в конце строки в описании, не в конце значения поля описания.

Пример

Вот описание xjig.

Description-en: An X11 jigsaw puzzle
 xjig is a puzzle that tries to replicate a jigsaw puzzle on the screen
 as closely as possible. Any GIF, JPEG or PPM image may be loaded and cut
 into pieces. The goal (as with any jigsaw puzzle) is to reassemble the
 original picture.
 .
 Tiles may be freely rotated by use of the mouse, flipped (for
 double-sided puzzles) and even shown as shaped windows on the desktop
 (fast machine/video card recommended for the latter!). An example image
 is provided in /usr/share/games/xjig .

Если я ищу все строки тот конец с xjig .$.

$ apt-cache search 'xjig \.$'
xjig - An X11 jigsaw puzzle

Помните, что значение для описания является просто длинной строкой, которая перенесена в той точке, поэтому хотя "рабочий стол" является в конце строкой, это не на самом деле в конце значения описания.

Альтернатива

Учитывая Вы ищете слово desktop Вы могли искать строку с любым пробелы с обеих сторон (\s), или границы слова (\b).

$ apt-cache search '\sdesktop\s' | grep xjig
xjig - An X11 jigsaw puzzle

$ apt-cache search '\bdesktop\b' | grep xjig
xjig - An X11 jigsaw puzzle

Понимание regex привязки

Возможно, использование grep видеть, что привязка делает в regex, помогло бы.

рабочий стол не в конце

$ echo "this is a desktop string" | grep "desktop$"
$

рабочий стол в конце

$ echo "this is a desktop" | grep "desktop$"
this is a desktop

Комплимент к $ для привязки соответствий в конец строк, ^ для привязки соответствий к началу.

рабочий стол не вначале

$ echo "this is a desktop" | grep "^desktop"
$

рабочий стол вначале

$ echo "desktop this is a desktop" | grep "^desktop"
desktop this is a desktop
4
27.01.2020, 20:51
  • 1
    я могу понять "В Вашем случае строковый рабочий стол в описании xjig, хотя в конце строки в описании, не в конце значения поля описания". Я думаю, что это объяснило бы мой беспорядок. Но почему Вы давали apt-cache search xjig .$ как пример? Это имеет меня перепутанный снова. Не делает это означает, что мы теперь ищем два условия, xjig и. $? –   28.01.2014, 09:16
  • 2
    @vasa1 - нет мы ищем строку "xjig". но только, которые являются в конце строк, которым мы пытаемся соответствовать. Помните, что мы заключаем аргументы в кавычки apt-cache search в одинарных кавычках, таким образом, это - отдельный аргумент, мы ищем. –  slm♦ 28.01.2014, 09:19
  • 3
    Хорошо, но почему пространство после xjigи перед периодом? –   28.01.2014, 09:27
  • 4
    @vasa1 - это - то, как описание собирается для xjig. Никакая другая причина, чем это. Выполните это apt-cache show xjig и посмотрите на то, как поле Description обнаруживается. –  slm♦ 28.01.2014, 09:29

Поле описания является многострочным полем, но $ в regexp, означает конец поля, не конец каждой строки поля. Так, если Вы хотите искать desktop в конце строки или в конце поля, Вам нужно:

apt-cache search 'desktop(
|$)'

Или с ksh93 $'...' кавычки (также найденный в zsh и bash) разрешение \x escape-последовательности:

apt-cache search $'desktop(\n|$)'

Также отметьте это . действительно соответствует символу новой строки. Записанный в perl, это было бы:

print "$name - $summary" if 
   $name =~ qr{$re}si ||
   $description =~ qr{$re}si;

(кроме они не жемчуг regexps, конечно),

3
27.01.2020, 20:51
  • 1
    Вы могли бы хотеть объяснить $'' нотация. Большинство людей не знакомо с ним. –  slm♦ 28.01.2014, 09:22
  • 2
    Да, я собирался спросить это потому что apt-cache search 'desktop(\n|$)' по-видимому, работы также. –   28.01.2014, 09:24
  • 3
    @vasa1. Хм. Странный, 'desktop(\n|$)' кажется, работает действительно, но нет 'desktop\n' ни 'desktop(\n)'. Я не знаю почему. –  Stéphane Chazelas 28.01.2014, 09:27
  • 4
    @StephaneChazelas - да я заметил, что 'desktop\n' не работал также. Я упустил его из своего ответа относительно не, путают ситуацию далее. Вот почему я пошел с \b подход. –  slm♦ 28.01.2014, 09:32

Теги

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