dd.mm.yyyy
ユーザーが入力した日付を次の形式で取得し、それを変数として保存するbashスクリプトがあります。
$date
yyyymmdd
今後の使用のために、この変数を次の形式に変更する必要があります。
だから、もはやポイントはなく、ポイント間の値は後ろから前に行きます。
sed
たとえば、これを簡単に行う方法はありますか?
答え1
純粋なbash
解決策は次のとおりです。
$ # input is dd.mm.yyyy
$ input_date="dd.mm.yyyy"
$ # output will be yyyymmdd
$ output_date=${input_date:6:4}${input_date:3:2}${input_date:0:2}
$ echo "$output_date"
yyyymmdd
答え2
これが私の簡単なsed
方法です。特に巧妙ではありませんが、効果的です:-)
$ IN=12.34.5678
$ OUT=$(echo $IN | sed 's/\(..\).\(..\).\(....\)/\3\2\1/')
$ echo $OUT
56783412
$
awk
方法
$ OUT=$(echo $IN | awk -F. '{print $3$2$1}')
$ echo $OUT
56783412
$
tr
//ハイブリッドtac
paste
$ OUT=$(echo $IN | tr '.' '\n' | tac | paste -s -d "")
$ echo $OUT
56783412
$
答え3
echo "26.11.2016" | awk -F"." '{print $3$2$1}'
出力:20161126
答え4
このdate
コマンドは、修飾子を使用してISO8601形式で出力できます。
robert@pip2:/tmp$ date
Mon Aug 5 16:09:35 PDT 2019
robert@pip2:/tmp$ date --iso-8601
2019-08-05
...そしてその間にあるハイフンを取り除きます。 sedを使用してください:
robert@pip2:/tmp$ date --iso-8601 | sed s/-//g
20190805