我有一些行列出的txt文件。每行包含图像名称。我想要的是,编辑相同txt文件的shell脚本或将特定图像名称复制到新文件。
这是我的txt文件,其中包含带有路径的图像列表。
我想要这样的输出:
我想只从这些行中提取图像名称。
答案 0 :(得分:1)
使用gnu sed
即可:
sed -r 's~^[^[:blank:]]*/([^/ ]+) .*$~\1~' file
1.png
1@2x.png
2.png
2@2x.png
3.png
答案 1 :(得分:1)
您可以使用此awk
,
awk '{ split($1,arr,"/"); print arr[length(arr)] }' yourfile > output.txt
答案 2 :(得分:0)
您可以执行以下操作:
cat the_file.txt|while read file; do
echo $(basename $file)
done
并且(如果需要)将输出重定向到另一个文件。
答案 3 :(得分:0)
while read fn rest
do
basename "$fn"
done < file.txt
这将逐行读取您的输入。它会将文件名(包括路径)放入fn
变量,并将该行的其余部分放入rest
。然后它使用basename
命令去掉路径并打印出文件名本身。
答案 4 :(得分:0)
这是另一个sed
解决方案,它不使用扩展正则表达式(更便携的解决方案):
sed 's/^.*\/\([^[:blank:]\/]*\)[[:blank:]].*$/\1/' sourceFile > destFile
您必须分别将sourceFile
和destFile
白色替换为oridinal和destination文件的路径。
该命令查找没有空格字符或斜杠\([^[:blank:]\/]*\)
的任何字符串,前面有斜杠^.*\/
,后跟空白字符[[:blank:]].*$
,而不是使用第一个匹配字符串替换模式/\1/
{1}}。
您可以阅读快速sed
参考here。