匹配特定模式后在数字之间插入空格

时间:2016-06-17 10:30:13

标签: regex linux bash unix sed

我有以下需要操作的温度数据。考虑使用sed在数据之间插入空格,但数据不断变化。

76 75 75 77 80 84 87 91 94 97100101101102101 97 92 89 86 84 82 81 79 78 77

我需要它看起来像这样:

76 75 75 77 80 84 87 91 94 97 100 101 101 102 101 97 92 89 86 84 82 81 79 78 77

现在,我使用以下代码来解析最高值(数字聚集在一起):

grep -Eo '[0-9]' .../temp.txt | sort -rn | head -n 1

1 个答案:

答案 0 :(得分:4)

要做的第一件事就是修改生成数据的任何内容,以便输出更宽的字段宽度。

如果那是不可能的,那么以下内容将对输出进行去除:

$ sed 's/\([ 1-9][0-9][0-9]\)/ \1/g' data | tr -s ' '
76 75 75 77 80 84 87 91 94 97 100 101 101 102 101 97 92 89 86 84 82 81 79 78 77

我将tr放在最后只是为了删除sed输出中的连续空格(为所有两位整数生成,除了第一个,在这种情况下,不是' t与正则表达式匹配)。

但实际上,需要更新数据生成器。