将列添加到制表符分隔文件的中间(sed/awk/其他)

问题描述 投票:0回答:3

我正在尝试将一列(内容为“0”)添加到预先存在的制表符分隔文本文件的中间。我想

sed
awk
会做我想要的。我在网上看到了各种解决方案,但它们的解释不够简单,我无法修改!

我目前有此内容:

Affx-11749850   1       555296  CC

我需要这个内容

Affx-11749850   1   0   555296  CC

使用命令

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

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

sed awk
3个回答
12
投票

使用隐式

{ print }
规则并将
0
附加到第二列:

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

或者使用

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

sed 's/ / 0 /2' file

perl
:

perl -lane '$, = " "; $F[1] .= " 0"; print @F'

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

0
投票

以上答案是正确的,但输出不是制表符分隔的。要解决此问题,您可以使用以下 awk 命令:

awk -F'\t' -v OFS="\t" '{$2=$3 FS "0"; print}' /path/to/your/file
© www.soinside.com 2019 - 2024. All rights reserved.