開始文字から終了文字までの部分文字列を取得して、それが持つ「日付形式」を識別する簡単な方法があるかどうかを確認しようとしています。機能しているソリューションがありますが、もっと簡単な方法があるかどうかを探しています。それを行うには。
EXAMPLE:
file_name=file_test_<yyyymmdd>_format.xls
SUBSTRING FROM "<" to ">"
<yyyymmdd>
これは私が持っていて働いているものです:
file_name="test_file_<mmddyyyy>_test"
format_date=""
Char_Found=0
index=0
while [ $index -lt ${#file_name} ]; do
letter=$(echo $file_name | cut -c$(( $index + 1 )))
if [ $letter == "<" ]; then
Char_Found=1
fi
if [ $letter == ">" ]; then
format_date=${format_date}">"
break
fi
if (( ${Char_Found} )); then
format_date=${format_date}"${letter}"
fi
index=$(( $index + 1 ))
done
echo "Format string: ${format_date}"
#OUTPUT: <mmddyyyy>
投稿された実装は長いだけでなくcut
、すべての文字に対してループで呼び出すため、非常に非効率的です。
Bashのパラメーター展開と呼ばれるものを使用すると、より単純ではるかに効率的なソリューションが可能になります。これは、kshでも問題なく機能するようです。
file_name="test_file_<mmddyyyy>_test"
format_date=$file_name
format_date="<${format_date#*<}" # chop off the beginning until <
format_date="${format_date%%>*}>" # chop off the end from >
echo "Format string: ${format_date}"
出力:
Format string: <mmddyyyy>
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加