私が入力したファイル名は次のとおりです。
Sample_0000860156-001-out_20150224150524.xml.gz
私のターゲットファイル名にfile_nameを追加したいと思います0000860156-001
。
ベストアンサー1
以下はいくつかの方法です。抽出したい文字列で何をすべきか説明しなかったので、印刷します。
awk
区切り文字が複数あります。echo Sample_0000860156-001-out_20150224150524.xml.gz | awk -F '[_-]' '{print $2"-"$3}'
牛に似た一種の栄養
grep
echo Sample_0000860156-001-out_20150224150524.xml.gz | grep -oP '_\K.*(?=-)'
sed
echo Sample_0000860156-001-out_20150224150524.xml.gz | sed 's/.*_\([0-9]*-[0-9]*\)-.*/\1/'
パール
echo Sample_0000860156-001-out_20150224150524.xml.gz | perl -pe 's/.*_(.+?-.+?)-.*/\1/'
または、最新のPerlバージョンを使用してください(ありがとう。ツイート):
echo Sample_0000860156-001-out_20150224150524.xml.gz | perl -aF/[_-]/ -lne 'print $F[1]-$F[2]'
cut
echo Sample_0000860156-001-out_20150224150524.xml.gz | cut -d_ -f2 | cut -d- -f1,2