linux - 提取一个字符后的子字符串

标签 linux unix sed substring cut

我正在尝试提取最后一个句点(点)之后的子字符串。 以下示例。

  • echo "filename..txt" 应该返回 "txt"
  • echo "filename.txt." 应该返回 ""
  • echo "filename" 应该返回 ""
  • echo "filename.xml" 应该返回 "xml"

我在下面试过了。但仅当字符(点)存在一次时才有效。但是我的文件名可能有 0 次或更多次(点)。

echo "filename.txt" | cut -d "." -f2

最佳答案

让我们使用 awk!

awk -F"." '{print (NF>1)? $NF : ""}' file

这会将字段分隔符设置为 . 并打印最后一个。但如果没有,它会打印一个空字符串。

测试

$ cat file
filename..txt
filename.txt.
filename
filename.xml
$ awk -F"." '{print (NF>1)? $NF : ""}' file
txt


xml

关于linux - 提取一个字符后的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34538376/

相关文章:

python - 符号链接(symbolic link)如何在 Linux 中工作

node.js - 你需要在 node.js 中使用 path.join 吗?

C + UNIX,siglongjmp 和 sigsetjmp

linux - 如何设置 Node 服务器以便我可以使用 git 推送更新?

linux - Linux 中多线程应用程序中的 Coredump

linux - 从存储库获取 svn 日志,而不是工作副本

unix - 跨平台测试文件是否是目录的方法

sed - 从最后一行删除逗号

linux替换所有文件中的代码

sed - 使用sed如何仅在第一行中删除最后一个字符