Comando Cut para localizar os dados entre as strings

1

Você pode me ajudar a usar qualquer comando unix para cortar os dados entre os arquivos

meus arquivos:

MYFILES_DATA_SOMETHING_20150428.xml
MYFILES_DATA_SOMETHING_20150429.xml.gz etcc....

Eu quero encontrar apenas a data entre esses arquivos e armazenar em array. Por exemplo, eu tentei como

echo MYFILES_DATA_SOMETHING_20150428.xml  | cut -d '_' -f4

mas isso me dá 20150428.xml. mas eu quero apenas datas em todos os arquivos.

    
por creativeindian1984 13.05.2015 / 13:42

1 resposta

4

Você precisa passar por outra configuração de operação cut . como delimitador:

$ echo 'MYFILES_DATA_SOMETHING_20150428.xml' | cut -d_ -f4 | cut -d. -f1
20150428

Isso pode ser feito usando muitas ferramentas:

Usando bash ou qualquer shell POSIX:

$ var='MYFILES_DATA_SOMETHING_20150428.xml'
$ var="${var##*_}"
$ echo "${var%.*}"
20150428

Usando o GNU grep :

$ echo 'MYFILES_DATA_SOMETHING_20150428.xml' | grep -o '[0-9]\+'
20150428

Usando o GNU sed :

$ echo 'MYFILES_DATA_SOMETHING_20150428.xml' | sed 's/^.*_\([0-9]\+\).*$//'
20150428

Você também pode usar expr (graças a Stéphane Chazelas):

$ var='MYFILES_DATA_SOMETHING_20150428.xml'
$ expr "x$var" : '.*_\([^.]*\)'
20150428

Usando python :

$ python2 -c 'print "MYFILES_DATA_SOMETHING_20150428.xml".split("_")[-1].split(".")[0]'
20150428
    
por 13.05.2015 / 13:45

Tags