awkスクリプトからファイル名の一部を抽出する方法

awkスクリプトからファイル名の一部を抽出する方法

awkスクリプトを使用して複数のファイルに分割し、ファイルがあります。

元のファイル名:RTLOG_5019_05122016110959.DAT

分割ファイルの名前を次のように設定したいと思います。

RTLOG_5019_<timestmap (format: mmddyyyyhhmiss) >.DAT.

どうやってこれを達成できますか?ファイル名をハードコードしたり、filename-RTLOG_5019_05122016110959.DATパラメータとして渡したくありません。

以下は私のawkスクリプトです

awk -v stamp=$(date +%Y%m%d%H%M%S)  '
/^FHEAD/        {HD = $0  
             next
            }

/^THEAD/        {if (FN)  { printf "FTAIL%010d%010d" ORS, LN+2, LN > FN
                        close (FN)
                        LN = 0
                      }
             FN = "RTLOG_5019_" stamp ".DAT" ++f
             print HD > FN
            }

            !/^FTAIL/ {print >> FN
             LN++
            }

END             {printf "FTAIL%010d%010d" ORS, LN+2, LN > FN
            } ' RTLOG_5019_05122016110959.DAT

答え1

正確に何をしたいのかわかりませんが、次のことが役に立ちます。

 awk -v var="new" 'BEGIN { print substr(ARGV[1], 0, 2) var substr(ARGV[1], 6); }' myoldfilename

関連情報