複数の区切り文字を切り捨てるための awk/sed コマンド

複数の区切り文字を切り捨てるための awk/sed コマンド

私が入力したファイル名は次のとおりです。

Sample_0000860156-001-out_20150224150524.xml.gz

私のターゲットファイル名にfile_nameを追加したいと思います0000860156-001

ベストアンサー1

以下はいくつかの方法です。抽出したい文字列で何をすべきか説明しなかったので、印刷します。

  1. awk区切り文字が複数あります。

    echo Sample_0000860156-001-out_20150224150524.xml.gz | 
     awk -F '[_-]' '{print $2"-"$3}'
    
  2. 牛に似た一種の栄養grep

    echo Sample_0000860156-001-out_20150224150524.xml.gz | grep -oP '_\K.*(?=-)'
    
  3. sed

    echo Sample_0000860156-001-out_20150224150524.xml.gz | 
      sed 's/.*_\([0-9]*-[0-9]*\)-.*/\1/'
    
  4. パール

    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]'
    
  5. cut

    echo Sample_0000860156-001-out_20150224150524.xml.gz | 
      cut -d_ -f2 | cut -d- -f1,2
    

おすすめ記事