前缀#输出除0-100之外的数字

时间:2014-03-31 07:51:39

标签: linux shell sed

我有一些来自

形式的程序的输出
foo
10000
bar
20
baz
30
qux
50
...

需要转换此输出,以便不包含0到100之间的数字的行以#为前缀(仅通过管道):

#foo
#10000
#bar
20
#baz
30
#qux
50
...

如何使用标准Linux工具之一(优选sed)实现这一目标?

2 个答案:

答案 0 :(得分:2)

awk应该:

awk '$0>99 {$0="#"$0}1'
#foo
#10000
#bar
20
#baz
30
#qux
50

pipe

一起使用
command | awk '$0>99 {$0="#"$0}1'

它会在大于#

的所有数字前面提供100

答案 1 :(得分:2)

使用GNU sed如果0..100是独占的(因此100不应该预先渲染):

sed '/^[0-9]\{1,2\}$/! s/^/#/' INPUTFILE

更新:如果输入也可以包含小数,则可能需要使用此版本:

sed '/^[0-9]\{1,2\}\(\.[0-9]\+\)\?$/! s/^/#/' INPUTFILE