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シェルを使用してください。
$ 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