Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 如何分割完整路线的最后一个字段_Shell_Awk - Fatal编程技术网

Shell 如何分割完整路线的最后一个字段

Shell 如何分割完整路线的最后一个字段,shell,awk,Shell,Awk,我有一些不同路径的文件,如下所示: ./a/b/c/test.h ./d/e/f/g/h/abc1.c ./i/j/k/l/m/n/o/p/hello.log ... 我只想得到每个文件的文件名。也就是说:我想得到“test.h”、“abc1.c”、“hello.log” 由于路线的深度不确定,所以awk可能无法解决我的问题。 有人能帮我吗?您可以使用basename命令: while read line do basename $line done < "myfile" 读取行时 做

我有一些不同路径的文件,如下所示:

./a/b/c/test.h
./d/e/f/g/h/abc1.c
./i/j/k/l/m/n/o/p/hello.log
...
我只想得到每个文件的文件名。也就是说:我想得到“test.h”、“abc1.c”、“hello.log

由于路线的深度不确定,所以awk可能无法解决我的问题。
有人能帮我吗?

您可以使用
basename
命令:

while read line
do
basename $line
done < "myfile"
读取行时
做
基线名称$line
完成<“我的文件”

basename
通常是实现这一点的方法,但以下是如何在AWK中实现这一点:

filename=./i/j/k/l/m/n/o/p/hello.log
echo "$filename" | awk -F/ '{print $NF}'
另一个:

awk -v filename="$filename" 'BEGIN {len = split("/", filename, a); print a[len]}'
在纯Bash中:

echo ${filename##*/}

我还没有听过basename命令,我会用谷歌搜索一下。谢谢谢谢!这正是我想要的:-)是的,谢谢大家!basename正是我想要的命令!
awk -F"/" '{print $NF}' file_name