繁体   English   中英

Shell脚本从日志消息行中提取文件名

[英]Shell script to extract a filename from log message lines

我有列出一些行的txt文件。 每行都包含图像名称。 我想要的是,编辑相同txt文件或将特定图像名称复制到新文件的shell脚本。

这是我的txt文件,其中包含图像列表及其路径。 在此处输入图片说明

我想要这样的输出:

在此处输入图片说明

我只希望从这些行中提取图像名称。

使用gnu sed您可以执行以下操作:

sed -r 's~^[^[:blank:]]*/([^/ ]+) .*$~\1~' file
1.png
1@2x.png
2.png
2@2x.png
3.png

您可以使用此awk

awk '{ split($1,arr,"/"); print arr[length(arr)] }' yourfile > output.txt

您可以执行以下操作:

cat the_file.txt|while read file; do
    echo $(basename $file)
done

然后(如果需要)将输出重定向到另一个文件。

while read fn rest
do
    basename "$fn"
done < file.txt

这将逐行读取您的输入。 它将把文件名(包括路径)放入fn变量中,并将该行rest部分中的所有内容放入rest 然后,它使用basename命令删除路径,仅打印出文件名本身。

这是另一个不使用扩展正则表达式的sed解决方案(更具可移植性的解决方案):

sed 's/^.*\/\([^[:blank:]\/]*\)[[:blank:]].*$/\1/' sourceFile > destFile

您必须将原始文件和目标文件的路径分别替换为sourceFiledestFile

该命令查找没有空格或斜杠\\([^[:blank:]\\/]*\\)任何字符串,其前加斜杠^.*\\/ ,后跟空白char [[:blank:]].*$ patter被第一个匹配的字符串/\\1/取代。

您可以在此处阅读快速的sed参考。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM