awk - 使用报告中的 awk 匹配文件路径
问题描述
尽管进行了多次尝试,但我无法获得使用 awk 从报告中提取文件名的正确方法。
我有这样的输出。
found in file /home/cloudst/homes/james/Maildir/cur/1580910042.2931_0.s3.mydomain.com:2,Sa/PURCHASE ORDER KALI-1374Wpdf.gz/PURCHASE ORDER KALI-1374Wpdf.exe/FILE:0000
found in file /home/cloudst/homes/james/Maildir/cur/1580910052.2932_0.s3.mydomain.com:2,Sa/PURCHASE ORDER KALI-1374Bpdf.gz/PURCHASE ORDER KALI-1374Bpdf.exe
found in file /home/cloudst/homes/james/Maildir/.afolder/cur/1580910152.2935_0.s3.mydomain.com:2,Sa/PURCHASE ORDER KALI-1364Cpdf.gz/PURCHASE ORDER KALI-1374Dpdf.exe
我需要提取实际的文件路径。这里,实际的文件路径是
/home/cloudst/homes/james/Maildir/.afolder/cur/1580910152.2935_0.s3.mydomain.com:2,Sa
对于第一行。如何使用 awk、sed 或任何使用正则表达式的命令从该结果中提取实际文件路径?
预期的输出将是
/home/cloudst/homes/james/Maildir/cur/1580910042.2931_0.s3.mydomain.com:2,Sa
/home/cloudst/homes/james/Maildir/cur/1580910052.2932_0.s3.mydomain.com:2,Sa
/home/cloudst/homes/james/Maildir/.afolder/cur/1580910152.2935_0.s3.mydomain.com:2,Sa
解决方案
请您尝试以下操作。
awk 'match($0,/\/[^,]*,[a-zA-Z]+/){print substr($0,RSTART,RLENGTH)}' Input_file
说明:为上述代码添加详细说明。
awk ' ##Starting awk program from here.
match($0,/\/[^,]*,[a-zA-Z]+/){ ##Using match function of awk to match regex \/[^,]*,[a-zA-Z]+ which means match till comma then till alphabets in lines.
print substr($0,RSTART,RLENGTH) ##Printing sub-string whose starting point is RSTART and ending point is RLENGTH.
}
' Input_file ##Mentioning Input_file here.
推荐阅读
- c# - 我可以在 HTML 中制作自定义元素吗?如果是这样,怎么做?
- python - 如何在 Anaconda 中更新 Django?
- groovy - 使用 Groovy 解析 JSON
- python - 无论我做什么,我都会不断收到 AttributeError: 'str' object has no attribute 'read'
- chart.js - x 轴标签的位置与折线图数据点不同步
- node.js - node.js ssh2 => 如何关闭连接并处理 ECONNRESET 错误
- c - 从结构定义的数组中打印出一个字符串
- c++ - 元素如何存储在二维数组中?
- visual-studio-2019 - Visual Studio 代码分析器给出无意义的警告
- angular - Angular 应用程序的子组件中没有 NgControl 提供程序