我有一个文本文件,其中包含以下行:
/u/tux/abc/spool/frtbla_mcdetc_0000149099_20101126135009990_1.tif
我想提取frtbla_mcdetc_0000149099_20101126135009990_1.tif
; 最后一个斜杠 ( ) 后面的单词/
。
答案1
如果您处于类似 Linux 的环境中,则可以使用该basename
实用程序:
basename $(<your_file)
答案2
使用此命令
cat text_file_name | cut -d '/' -f 6
答案3
如果您知道目录结构的确切格式并且它不会改变,则可以使用cut
:
$ cut -f6 -d '/' file.txt
这里使用 cut 将目录分隔符作为分隔符,并提取第 6 个。
如果你所知道的只是行的最后一部分但不知道目录结构,您rev
也可以使用:
$ rev file.txt | cut -f1 -d '/' | rev
这里文件被反转了,并且第一的提取字段,然后再次反转。
答案4
我不知道 Aix 中的标准 shell 是什么,但是bash
它可用并且支持编辑变量的扩展。
如果您的全名在变量中FileName
,则${FileName##*/}
显示名称时会删除所有前导字符,直到最后一个/
;相反,${FileName#*/}
会删除直到第一个/
,而会${FileName%/*}
从最后一个/
(即目录路径)删除尾随字符。
如果您通过命令生成文件名find
,那么您需要如下命令:
find ... | while read FileName; do echo ${FileName##*/}; done
如果在文本文件中:
while read FileName; do echo ${FileName##*/}; done < FileList.txt
echo
用您需要对名称进行的任何处理来替换该命令。