当前位置:  开发笔记 > 编程语言 > 正文

你如何在bash中解析文件名?

如何解决《你如何在bash中解析文件名?》经验,为你挑选了4个好方法。

我的文件名格式如下:

system-source-yyyymmdd.dat

我希望能够使用" - "作为分隔符来解析文件名的不同位.



1> Bobby Jack..:

您可以使用cut命令获取3个'字段'中的每个字段,例如:

$ echo "system-source-yyyymmdd.dat" | cut -d'-' -f2
source

"-d"指定分隔符," - f"指定所需字段的编号



2> Colas Nahabo..:

一个漂亮而优雅(在我看来:-)只使用内置插件就是把它放到一个数组中

var='system-source-yyyymmdd.dat'
parts=(${var//-/ })

然后,你可以找到数组中的部分......

echo ${parts[0]}  ==> system
echo ${parts[1]}  ==> source
echo ${parts[2]}  ==> yyyymmdd.dat

警告:如果文件名包含"奇怪"字符,如空格,或天堂禁止,引号,反引号,这将无效.



3> flight..:

根据您的需要,awk比剪切更灵活.第一个预告:

# echo "system-source-yyyymmdd.dat" \
    |awk -F- '{printf "System: %s\nSource: %s\nYear: %s\nMonth: %s\nDay: %s\n",
              $1,$2,substr($3,1,4),substr($3,5,2),substr($3,7,2)}'
System: system
Source: source
Year: yyyy
Month: mm
Day: dd

问题是将awk描述为"更灵活"肯定就像把iPhone称为增强型手机;-)



4> David..:

使用该cut命令.

例如

echo "system-source-yyyymmdd.dat" | cut -f1 -d'-'

将提取第一位.

更改-f参数的值以获取相应的部件.

这是Cut命令的指南.

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有