我有一个包含许多缺失值的数据集,如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
答案 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}}