Вы можете сделать это с помощью awk, поддерживая массивы для названия книги и года, а также для статей. В вашем примере для статей нет лет, поэтому они просто указаны во втором столбце в качестве заголовка.
Вот пример:
#!/usr/bin/awk -f
function finish() {
rows = book;
if (rows < paper) rows = paper;
for (n = 0; n <= rows; ++n) {
printf "%-15s %-25s %-8s %s\n",
author,
n <= book ? books[n] : "-",
n <= book ? years[n] : "-",
n <= paper ? papers[n] : "-";
}
book = -1;
paper = -1;
}
BEGIN {
author = "?";
book = -1;
paper = -1;
printf "Author Books year Papers\n";
}
/^[[:space:]]*Author[[:space:]]/ {
finish();
author = $0;
sub("^[^[:space:]]+[[:space:]]+", "", author);
sub("[[:space:]]+$", "", author);
next;
}
/^[[:space:]]*(e)?paper[[:space:]]/ {
++paper;
item = $0;
sub("^[^[:space:]]+[[:space:]]+", "", item);
sub("[[:space:]]+$", "", item);
papers[paper] = item;
next;
}
/^[[:space:]]*([eE])?[bB]ook[[:space:]].*year[[:space:]]+[[:digit:]]+[[:space:]]*$/ {
++book;
item = $0;
sub("^[^[:space:]]*[[:space:]]*", "", item);
sub("[[:space:]]+$", "", item);
title = item;
sub("[[:space:]]*year[[:space:]]+[[:digit:]]+$", "", title);
year = item;
sub("^.*year[[:space:]]+", "", year);
books[book] = title;
years[book] = year;
next;
}
END {
finish();
}
с выводом:
$ ./foo <foo.in
Author Books year Papers
E. Narayanan Astrophysics 2001 Intelligent Transportation
E. Narayanan General Mechanics 2010 Nanotechnology Magazine
E. Narayanan Nuclear physics 2011 -
R Ramesh Organic Chemistry 2007 Ionic Batteries
R Ramesh Physical chemistry 2008 solar photocatalytic oxidation processes
R Ramesh - - Biological oxidation
Похоже, вы можете просто написать небольшой скрипт-оболочку, который применяет нужные вам аргументы:
#!/bin/sh
exec /usr/bin/mupdf-gl -r 150 "$@"
, а затем сохраните этот код где-нибудь в системе (, скажем, /usr/bin/my-mupdf
), сделайте его исполняемым (chmod +x /usr/bin/my-mupdf
), а затем выберите путь к этому скрипту-оболочке из графического интерфейса(/usr/bin/my-mupdf
вместо/usr/bin/mupdf-gl
). Таким образом, графический интерфейс вызывает ваш скрипт-оболочку, который, в свою очередь, заменяет себя на mupdf-gl
с соответствующими аргументами.
Просто создайте alias
для mupdf-gl
, вот так:-
$ alias mupdf-gl=mupdf-gl\ -r\ 150
Не забудьте включить эту строку в свой /home/.bash_aliases
, чтобы не вводить ее снова.