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

$ 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

関連情報