Bashスクリプト変換

Bashスクリプト変換

Bashスクリプトで次のテキストを変換する必要があります。

111319 2036

到着

2019年11月13日 20:36

これは可能ですか?

挨拶。

答え1

GNU awkを使う:

awk -v FIELDWIDTHS='2 2 2 1 2 2' '{ print $1 "/" $2 "/" $3 " " $5 ":" $6 }'

答え2

伝統的な解決策は何かをすることです。sed

sed 's!^\(..\)\(..\)\(..\) \(..\)\(..\)!\1/\2\/\3 \4:\5!'

たとえば、

% echo 111319 2036 | sed 's!^\(..\)\(..\)\(..\) \(..\)\(..\)!\1/\2\/\3 \4:\5!'
11/13/19 20:36

純粋なbash解決策も可能です。

たとえば、$a に値がある場合

${a:0:2}/${a:2:2}/${a:4:2} ${a:7:2}:${a:8:2}

たとえば、

$ a="111319 2036"
$ echo ${a:0:2}/${a:2:2}/${a:4:2} ${a:7:2}:${a:8:2}
11/13/19 20:03

答え3

echo "111319 2036"| awk '{print substr($1,1,2)"/"substr($1,3,2)"/"substr($1,5,2) " " substr($NF,1,2)":"substr($NF,3,4)}'

出力

11/13/19 20:36

関連情報