在awk中获取错误打印

时间:2015-11-05 02:16:31

标签: awk

我有一个包含许多缺失值的数据集,如9999,9000等。部分数据是

input.txt
30
9999
10
40
23
44
9000
9999
31
.
.

我想按照以下标准打印相同的列。

if $1 < 9000 then no change, else $1+100

欲望输出

ofile.txt
130
9999
110
140
123
144
9000
9999
131
.
.

我尝试了以下内容,但无法取得成功。

awk 'if ($1<9000) {printf "%7s\n", $+100}' input.txt

1 个答案:

答案 0 :(得分:3)

if ($1<9000) $1=$1+100

工作原理:

  • printf "%-7s\n", $1

    如果第一列中的数字小于9000,则会向其添加100。

  • %-7s

    新号码,无论是什么,都以%7s格式打印出来。

    您的示例代码使用%-7s,这将产生右对齐输出。相比之下,您想要的输出是左对齐的。这就是为什么我改为格式化为awk '$1<9000{$1+=100}1' input.txt

如果您对特殊格式字符串不感兴趣,那么代码可以简化为(帽子提示:jaypal singh):

{{1}}