ファイル名から日付を取得する必要があります。

ファイル名から日付を取得する必要があります。

ファイル名はabcd_abcd_12302022.csvで、次のコマンドを使用してファイル名から日付を抽出しました。

cut -c 11-18

日付は 12302022 です。 2022年12月30日に次のコマンドを実行しようとしましたが、12_30_2022を取得しました。

echo '20150716' | sed -e 's/\([0-9]\{4\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)/\1_\2_\3/'

2022年12月30日の出力が必要です。

ベストアンサー1

これはあなたのような基本的な考えです。そこに直接追加したので、_変更すると/機能します。 sedの演算子には別の区切り文字を使用する必要がありますs///。ここでは以下を使用していますs|||

$ echo abcd_abcd_12302022.csv | cut -c 11-18 | sed -E 's|(..)(..)(....)|\1/\2/\3|'
12/30/2022

または、携帯性を向上させるには:

$ echo abcd_abcd_12302022.csv | cut -c 11-18 | sed  's|\(..\)\(..\)\(....\)|\1/\2/\3|'
12/30/2022

またはを使用できますが、次のように挿入する内容をエスケープする必要がs///あります。/\/

$ echo abcd_abcd_12302022.csv | cut -c 11-18 | sed -E 's/(..)(..)(....)/\1\/\2\/\3/'
12/30/2022

$ echo abcd_abcd_12302022.csv | cut -c 11-18 | sed  's/\(..\)\(..\)\(....\)/\1\/\2\/\3/'
12/30/2022

おすすめ記事