我的文件名格式如下:
system-source-yyyymmdd.dat
我希望能够使用" - "作为分隔符来解析文件名的不同位.
您可以使用cut命令获取3个'字段'中的每个字段,例如:
$ echo "system-source-yyyymmdd.dat" | cut -d'-' -f2 source
"-d"指定分隔符," - f"指定所需字段的编号
一个漂亮而优雅(在我看来:-)只使用内置插件就是把它放到一个数组中
var='system-source-yyyymmdd.dat' parts=(${var//-/ })
然后,你可以找到数组中的部分......
echo ${parts[0]} ==> system echo ${parts[1]} ==> source echo ${parts[2]} ==> yyyymmdd.dat
警告:如果文件名包含"奇怪"字符,如空格,或天堂禁止,引号,反引号,这将无效.
根据您的需要,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称为增强型手机;-)
使用该cut
命令.
例如
echo "system-source-yyyymmdd.dat" | cut -f1 -d'-'
将提取第一位.
更改-f
参数的值以获取相应的部件.
这是Cut命令的指南.