grep 并从非结构化文件中剪切文本?

grep 并从非结构化文件中剪切文本?

从下面 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行字符串的内容。

相关内容