awk - 如果最后一列是空的,则打印最后一列或前一列

nat*_*ath 3 awk

AWK如果字符串只是一个目录,我想用来获取文件名或最后一个文件夹的名称。

我有:

 awk -F '/' '{print $NF}'
Run Code Online (Sandbox Code Playgroud)

打印最后一列和:

 awk -F '/' '{print $(NF - 1)}
Run Code Online (Sandbox Code Playgroud)

在最后一列之前打印一列。

如何awk识别字符串是否仅包含目录而没有文件名,并在这种情况下在最后一列之前打印一列。

我的问题是目录可能如下所示:

./folder1/folder2/folder3/
Run Code Online (Sandbox Code Playgroud)

在这种情况下,最后一列将为空。我想awk识别这个然后打印folder3(所以在最后一列之前一列)。

小智 5

为此,您可以使用if?:运算符。

awk -F '/' '{print $NF == "" ? $(NF - 1) : $NF}'
Run Code Online (Sandbox Code Playgroud)
awk -F '/' '{if($NF == "") print $(NF - 1); else print $NF}'
Run Code Online (Sandbox Code Playgroud)