私はスクリプト(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'に一致して複雑になります。
grep -m 1 -oP $(echo $x)'[^ ]+\.el7' scratchgio-sharp
あなたはどうやってこの[^] + \を使うために考え出したのか説明してもらえますか?それとも[^] + \何ですか?ありがとう。