![awk](https://linux22.com/image/99884/awk.png)
我有多个包含 12 行和 3 列的文本文件。
例子:
2 6 0.74
42 6 0.58
80 6 0
112 6 0.24
132 6 1
216 6 0.7
342 6 0
390 6 0.21
432 6 0.56
466 6 0.75
524 6 0.6
646 6 0.9
我想将所有行中第三列的所有值设置为 1。
输出应如下所示:
2 6 1
42 6 1
80 6 1
112 6 1
132 6 1
216 6 1
342 6 1
390 6 1
432 6 1
466 6 1
524 6 1
646 6 1
有谁知道可以解决这个问题的命令?
答案1
awk '{print $1, $2, "1"}' inputfile
答案2
尝试
awk
awk '{$3=1 ; print ;}' oldfile > newfile
$3 = 1
将第三个字段设置为 1
sed(这里是 GNU 或 busybox,sed
带有-i
就地编辑选项)
sed -i 's/[0-9.]*$/1/' file
[0-9.]*$
0
是从到9
到.
行尾的序列。
sed(打高尔夫球4字节)
sed -i 's/[^ ]*$/1/' file
[^ ]*$
除空格外的任何字符,直到行尾。
答案3
预期输出中的行似乎以两个空格字符结尾,并且字段由一个制表符和一个空格字符分隔。
如果这确实是您想要的,那么您需要:
awk -v 'OFS=\t ' '$3="1 "' < infile > outfile
或者与sed
:
tab=$(printf '\t')
sed "
s/[[:blank:]]\{1,\}/$tab /g
s/[^[:blank:]]\{1,\}[[:blank:]]*$/1 /
s/^[[:blank:]]*//" < infile > outfile
答案4
这将完成这项工作:
cat textfiles | cut -d' ' -f-2 | sed 's/$/ 1/'