你能帮我使用任何unix命令来剪切文件之间的数据吗
我的文件:
MYFILES_DATA_SOMETHING_20150428.xml
MYFILES_DATA_SOMETHING_20150429.xml.gz etcc....
我只想找到这些文件之间的日期并存储在数组中。例如,我尝试过
echo MYFILES_DATA_SOMETHING_20150428.xml | cut -d '_' -f4
但它给了我 20150428.xml 。但我只想要所有文件中的日期。
答案1
您必须通过另一个cut
操作设置.
作为分隔符:
$ echo 'MYFILES_DATA_SOMETHING_20150428.xml' | cut -d_ -f4 | cut -d. -f1
20150428
这可以使用许多工具来完成:
使用bash
或任何 POSIX shell:
$ var='MYFILES_DATA_SOMETHING_20150428.xml'
$ var="${var##*_}"
$ echo "${var%.*}"
20150428
使用 GNU grep
:
$ echo 'MYFILES_DATA_SOMETHING_20150428.xml' | grep -o '[0-9]\+'
20150428
使用 GNU sed
:
$ echo 'MYFILES_DATA_SOMETHING_20150428.xml' | sed 's/^.*_\([0-9]\+\).*$/\1/'
20150428
您还可以使用expr
(感谢 Stéphane Chazelas):
$ var='MYFILES_DATA_SOMETHING_20150428.xml'
$ expr "x$var" : '.*_\([^.]*\)'
20150428
使用python
:
$ python2 -c 'print "MYFILES_DATA_SOMETHING_20150428.xml".split("_")[-1].split(".")[0]'
20150428