我有一个文件file.txt
具有以下结构: -
./a/b/c/sdsd.c
./sdf/sdf/wer/saf/poi.c
./asd/wer/asdf/kljl.c
./wer/asdfo/wer/asf/asdf/hj.c
如何从路径中仅获取c文件名。 即,我的输出将是
sdsd.c
poi.c
kljl.c
hj.c
答案 0 :(得分:4)
使用awk可以做到这一点。
设置字段分隔符FS =“/”,$ NF将打印每条记录的最后一个字段。
awk 'BEGIN{FS="/"} {print $NF}' file.txt
或
awk -F/ '{print $NF}' file.txt
或者,您可以像这样使用cut和unix命令rev
rev file.txt | cut -d '/' -f1 | rev
答案 1 :(得分:4)
您可以使用basename
命令:
basename /a/b/c/sdsd.c
会给你sdsd.c
有关file.txt
中的文件列表,请执行以下操作:
while IFS= read -r line; do basename "$line"; done < file.txt
答案 2 :(得分:1)
最简单的一个($NF
是当前行的最后一列):
awk -F/ '{print $NF}' file.txt
或使用bash&amp; parameter expansion:
while read file; do echo "${file##*/}"; done < file.txt
或bash
与basename
:
while read file; do basename "$file"; done < file.txt
<强>输出强>
sdsd.c
poi.c
kljl.c
hj.c
答案 3 :(得分:1)
Perl解决方案:
perl -F/ -ane 'print $F[@F-1]' your_file
你也可以使用sed:
sed 's/.*[/]//g' your_file
答案 4 :(得分:1)
使用sed
:
$ sed 's|.*/||g' file
sdsd.c
poi.c
kljl.c
hj.c