ファイルリストから特定の列を切り取り、置換する

ファイルリストから特定の列を切り取り、置換する
41703
10002
30003
40002
40000
20203
20203
30100
50000
50000
50000
50000
70700
70600

このファイルがあります。出力が欲しいです。

4.17.3
1.0.2
3.0.3
4.0.2
4.0.0
2.2.3
2.2.3
3.1.0
5.0.0
5.0.0
5.0.0
5.0.0
7.7.0
7.6.0

私はSolarisマシンを作業しています。

ベストアンサー1

Awk解決策:

awk '{ printf "%d.%d.%d\n", substr($1,1,1), substr($1,2,3)/10, substr($1,5) }' file
  • substr(string, start [, length ])- 文字記号で始まり、length1文字の長さの部分文字列を返します。stringstart

出力:

4.17.3
1.0.2
3.0.3
4.0.2
4.0.0
2.2.3
2.2.3
3.1.0
5.0.0
5.0.0
5.0.0
5.0.0
7.7.0
7.6.0

GNUがサポートされている場合、awkより短い方法は次のとおりです。

awk -v FS="" '{ print $1, ($2$3$4)/10, $5 }' OFS='.' file
  • FS=""- 値が空の文字列("")の場合、レコード内の各文字は別々のフィールドになります。

おすすめ記事