Objective
or do you write an automated packaging script today that takes you to get the last file name from the path name. Here is a record of the implementation process. Of course, in the end I will also give the official practice. (PS: Very awkward, only to realize that the bash shell has ready-made functions)
Get file name
Suppose the given path name is:
/tmp/csdn/zhengyi/test/zhengyi.txt
awk Solution
use "/" to make the separator, and then print out the last part. The implementation code is as follows:
Resfile= ' Echo/tmp/csdn/zhengyi/test/adb.log | Awk-f "/" ' {Print $NF} '
Official solution (basename)
the Bash shell itself provides the basename command to get the last filename of the pathname directly, implementing the following code:
Resfile= ' Basename/tmp/csdn/zhengyi/test/adb.log '
Get directory Name
Official solution (DirName)
the Bash shell itself provides the dirname command, which is particularly handy for obtaining directory names corresponding to the path, implementing the following code:
Dirpath= ' Dirname/tmp/csdn/zhengyi/test/adb.log '
awk Solution
You can use delimiters flexibly and mix regular expressions:
Dirpath= ' Echo/tmp/csdn/zhengyi/test/adb.log | Awk-f '/[^/]*$ ' ' {print '} '
Methods of awk+for Circulation:
Echo/tmp/csdn/zhengyi/test/adb.log | awk ' begin{res= '; fs= "/";} {for (i=2;i<=nf-1;i++) res= (RES/"$i);} End{print Res} '