Cut 命令查找字符串之间的数据

Cut 命令查找字符串之间的数据

你能帮我使用任何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

相关内容