将多个非分隔数字拆分为两位有效数字

时间:2013-12-31 18:17:25

标签: bash awk

我需要使用awk分割一长串未分隔的数字。我该如何拆分:

91.5799.3677.48107.5981.26

使用awk生成:

91.57
99.36
77.48
107.59
81.26

3 个答案:

答案 0 :(得分:5)

使用egrep

可能会更容易
s='91.5799.3677.48107.5981.26'
egrep -o '[^.]*.[0-9]{2}' <<< "$s"
91.57
99.36
77.48
107.59
81.26

答案 1 :(得分:1)

如果GNU grep不可用且Perl可以接受:

perl -pe's|\...(?!\Z)|$&\n|g' infile

GNU awk:

awk 'NF&&$0=$0RT' RS='\\...' infile

答案 2 :(得分:1)

根据要求,这是awk ..

awk 'NR==1 {s=$1} NR>1 {e=substr($1,1,2);print s "." e;s=substr($1,3)}' RS="." <<< "91.5799.3677.48107.5981.26"
91.57
99.36
77.48
107.59
81.26

另一个版本

awk '{for (i=1;i<=NF;i++) {if ($i==".") f=i;printf "%s"(f&&i==f+2?RS:""),$i}}' FS=""
91.57
99.36
77.48
107.59
81.26