从下面 3 行开始,我只需要 grep 并剪切 jar 文件名。如何从行中 grep jar 名称并从那里剪切。
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文件的名称
第二个 awk 删除从行开头直到最后出现“/”的所有内容,只留下 jar 文件的名称
答案3
perl -ne 'print $1 if /([^\/]*\.jar\s)/' file
如果您希望结果在一行中(在尝试创建与模式匹配的名称数组时很有用)
或者,以不同的行打印它
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
行字符串的内容。