7

我正在尝试将一列(内容为“0”)添加到预先存在的制表符分隔的文本文件的中间。我想象sedawk将做我想做的事。我已经在网上看到了各种解决方案,它们大致可以做到这一点,但它们的解释不够简单,我无法修改!

我目前有这个内容:

Affx-11749850   1       555296  CC

我需要这个内容

Affx-11749850   1   0   555296  CC

使用命令awk '{$3=0}1'文件名会打乱我的格式并用 0 替换第 3 列,而不是用 0 添加第三列。

任何帮助(有解释!),所以我可以解决这个问题,以及未来的类似问题,非常感谢。

4

2 回答 2

12

使用隐式{ print }规则并将 附加0到第二列:

awk '$2 = $2 FS "0"' file

或使用sed,假设单个空格分隔符:

sed 's/ / 0 /2' file

或者perl

perl -lane '$, = " "; $F[1] .= " 0"; print @F'
于 2012-08-14T11:10:04.863 回答
1
awk '{$2=$2" "0; print }' your_file

测试如下:

> echo "Affx-11749850 1 555296 CC"|awk '{$2=$2" "0;print}'
Affx-11749850 1 0 555296 CC
于 2012-08-14T10:55:58.097 回答