構造化されていないファイルからテキストをgrepして切り取りますか?

構造化されていないファイルからテキストをgrepして切り取りますか?

下の3行から始めて、jarファイル名をgrepして切り取りました。行から瓶の名前をどのように把握し、そこから切り取ることができますか?

Downloading:https://repo.maven.apache.org/maven2/org/springframework/spring-aop/5.0.6.RELEASE/spring-aop-5.0.6.RELEASE.jar   
    Downloaded:https://repo.maven.apache.org/maven2/org/springframework/spring-aspects/5.0.6.RELEASE/spring-aspects-5.0.6.RELEASE.jar (46 KB at 12.6 KB/sec)
    Downloading:https://repo.maven.apache.org/maven2/org/springframework/security/spring-security-config/5.0.5.RELEASE/spring-security-config-5.0.5.RELEASE.jar
640/1052 KB   2580/6582 KB

答え1

grep()コマンドラインオプションをサポートし、次に終わる非文字シーケンスを-o出力したい場合--only-matching/.jar

grep -o '[^/]*\.jar\b' file

答え2

awk -F'.jar' '/.jar/{print $1".jar"}' file |awk '{print $NF}' FS=/

最初のawkは、「.jar」を含む行のみを表示し、jarファイル名まで表示します。

2番目のawkは、行の先頭から最後に「/」が表示されるまですべてを削除し、jarファイルの名前だけを残します。

答え3

perl -ne 'print $1 if /([^\/]*\.jar\s)/' file

結果を1行に表示したい場合(パターンに一致する名前の配列を作成するときに便利です)

または別の行に印刷してください。

perl -ne 'print "$1\n" if /([^\/]*\.jar)/' file

答え4

使用標準sed:

$ sed -nE '/\.jar/{ s%.*/(.+\.jar).*%\1%p; }' file
spring-aop-5.0.6.RELEASE.jar
spring-aspects-5.0.6.RELEASE.jar
spring-security-config-5.0.5.RELEASE.jar

文字列を含む行を見つけて.jar置換を実行します。置換は、行全体をその行のファイル名部分にのみ置き換えます。ファイル名が.jarその行の文字列を含む唯一のものであるとします。

関連情報