Следующий скрипт perl
извлекает имя случая в $ outfile
, если строка соответствует шаблону ER
(пробел, E, R, пробел), который не является строкой номера страницы (m / ER (?! P \ d +) /)
, и записывает все последующие строки (пока не обнаружит, что шаблон снова и, следовательно, новое имя файла) в файл с именем out / $ outfile.txt
.
#! /usr/bin/perl
use strict;
my $outfile='/dev/stdout';
open(OUTFILE,">","$outfile") || die "couldn't open $outfile for write: $!\n";
while (<>) {
chomp;
if (m/ ER (?!p\d+)/) {
$outfile = substr($_,0,200);
open(OUTFILE,">>","./out/$outfile.txt") || die "couldn't open ./out/$outfile.txt for write: $!\n";;
if (-s "./out/$outfile.txt") {
print OUTFILE "\n\n-=-=-=-=-=-=-=-=\n\n";
}
};
print OUTFILE $_,"\n";
}
Вывод слишком длинный, чтобы показывать его здесь, но я проверил его на предоставленных вами входных данных, и он работал должным образом. Если вы можете сделать все или часть файла (с большим количеством включенных случаев) доступными для загрузки где-нибудь, я могу протестировать (и, возможно, уточнить) сценарий дальше.
Используя list-of-case-volume-1.txt
(с удаленными номерами строк и сохраненными как ases2.txt
), вывод (Используя Lambert *
случаев в качестве примеров):
$ mkdir -p out/
$ ./hef.pl cases2.txt
$ ls -1 out/Lambert*
out/Lambert v Aeretree 1 Lord Raymond 223, 91 ER 1045.txt
out/Lambert v Atkins and Another 2 Campbell 272, 170 ER 1153.txt
out/Lambert v Cook 1 Lord Raymond 237, 91 ER 1055.txt
out/Lambert v Oakes 1 Lord Raymond 443, 91 ER 1194.txt
out/Lambert v Pack 1 Salkeld 127, 91 ER 120.txt
out/Lambert v Peyton [1860] 7 House of Lords Cases 423, 11 ER 169.txt
Некоторые из входных строк (4176 из 12861 строк) были для повторяющихся имен случаев, поэтому я изменил сценарий выше, чтобы добавить дополнительные строки для этого случая в существующий файл с - = - = - = - = - = - = - = - =
в качестве разделителя.
Некоторые заголовки регистров были слишком длинными для использования в качестве имени файла, поэтому я использовал substr ($ _, 0,200)
, чтобы ограничить имя файла первыми 200 символами. Другой альтернативой, которая могла бы привести к появлению нечеловечески понятных имен файлов, было бы использование хеша md5sum имени case в качестве имени файла.Название дела по-прежнему будет в первой строке файла.
Один, надеюсь, последний комментарий. Нетрудно изменить приведенный выше сценарий для использования модуля perl DBI
и базы данных postgres или mysql для хранения всех этих записей в базе данных с возможностью поиска .... с именем случая в качестве заголовка. поле индекса и текст в текстовом поле.
No hay una solución genérica pero hay al menos 2 jugadores que podrían Haz eso.
El primero es mplayer
junto connamed pipes
.
Primero, cree /tmp/mplayer.fifo
tubería con nombre:
$ mkfifo /tmp/mplayer.fifo
Inicie mplayer
y apúntelo a/tmp/mplayer.fifo
:
$ mplayer -novideo -idle -slave -input file=/tmp/mplayer.fifo file.mp3 </dev/null >/dev/null 2>&1 &
Ahora puede pausar y reanudar la reproducción escribiendo a/tmp/mplayer.fifo
:
$ echo pause > /tmp/mplayer.fifo
Posteriormente pause
reanudará la reproducción:
$ echo pause > /tmp/mplayer.fifo
También puede hacer otras cosas, por ejemplo, avance rápido:
$ echo seek +60" > /tmp/mplayer.fifo
o rebobinar la reproducción:
$ echo "seek -60" > /tmp/mplayer.fifo
El segundo es mocp
. Iniciar reproducción:
$ mocp -S; mocp -p file.mp3
Pausar/reanudar la reproducción:
$ mocp --toggle-pause
La implementación de este control normalmente estaría dentro del propio programa, pero una forma muy común de llevar a cabo este tipo de interfaz es una Tubería con nombre . Siempre que esté en el mismo host y no esté abriendo sockets para el control de la red. Puede crear su propio programa para usar la tubería con nombre y ejecutar los comandos necesarios, eliminar el proceso, etc. Si desea ver una tubería con nombre en acción, le sugiero que instale el reproductor CLI para Pandora ; barra de piano . Lo usa para aceptar comandos como en su ejemplo.
Si usar el reproductor VLC es una opción, puede controlar un proceso VLC en ejecución a través de aplicaciones remotas (GUI )o CLI usando llamadas dbus.
Por ejemplo -suponiendo que qdbus está instalado -alterna entre reproducción/pausa en la música que se está reproduciendo actualmente:
$ qdbus org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause
o ir a la siguiente pieza de la lista de reproducción:
$ qdbus org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Next
Ver todos los comandos disponibles:
$ qdbus org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2
Ver también este hilohttps://stackoverflow.com/questions/14256193/linux-control-a-running-vlc-process-through-command-line
Вы можете заглянуть в MPD , так как он может делать практически все, что вам может понадобиться: (удаленное управление, добавление новых треков и т. д. ). Вместо того, чтобы работать как фоновый процесс в вашей оболочке, он работает как системная служба, что означает, что его можно легко использовать в нескольких сеансах и входах в систему.У него даже есть возможность разрешить удаленное управление из другой системы (. Он широко используется для сетевых -устройств типа музыкальных автоматов -).
Для него также есть несколько приятных внешних интерфейсов, в том числе те, которые можно использовать с консоли.