Я пишу сценарий (bash/ командной строки), и я хочу быть в состоянии извлечь имя пакета до .el7
x=dbus-sharp
(пример имени пакета - который меняется)
пример текстового файла:
Building dbus-sharp-0.7.0-11.fc22 for epel7
Created task: 7970206
...
0 free 1 open 1 done 0 failed
7970225 buildArch (dbus-sharp-0.7.0-11.el7.src.rpm, ppc64): free
7970223 buildArch (dbus-sharp-0.7.0-11.el7.src.rpm, x86_64): open (buildhw-03.phx2.fedoraproject.org)
...
в основном сейчас я хочу
y=dbus-sharp-0.7.0-11.el7
Не имеет значения, нужно ли мне использовать grep, sed или awk.
Мне не повезло, гуглял подобное решение.
Примеры, которые я пробовал:
[me@h dbus-sharp]$ echo "Here is a String" | grep -Po '(?<=(Here )).*(?= String)'
is a
[me@h dbus-sharp]$ cat scratchdbus-sharp | grep -Po '(?<=(dbus)).*(?= el7)'
(no output?)
[me@h dbus-sharp]$ cat scratchdbus-sharp | awk '/dbus/,/el7/'
(it dumps the whole text file?)
[me@h dbus-sharp]$ sed -n "/dbus/,/el7/p" scratchdbus-sharp
(again the whole text file is dumped)
[me@h dbus-sharp]$ grep -m 1 "dbus-sharp" scratchdbus-sharp
Building dbus-sharp-0.7.0-11.fc22 for epel7
Думаю, я должен также отметить, что ep el7 будет в текстовом файле (ах), что также приведет к совпадению с усложняющими 'el7' вещами.