Bash 如何复制列?

Bash 如何复制列?,bash,awk,sed,Bash,Awk,Sed,我的数据输出3如下所示: ENSG00000133789 11 9554976 ENSG00000131626 11 70272382 ENSG00000020922 11 94324686 ENSG00000102710 13 36925520 ... 我想复制第3列并获得以下内容: ENSG00000133789 11 9554976 9554976 ENSG00000131626 11 70272382 70272382 ENSG00000020922 11 94324686 94324

我的数据输出3如下所示:

ENSG00000133789 11 9554976
ENSG00000131626 11 70272382
ENSG00000020922 11 94324686
ENSG00000102710 13 36925520
...
我想复制第3列并获得以下内容:

ENSG00000133789 11 9554976 9554976
ENSG00000131626 11 70272382 70272382
ENSG00000020922 11 94324686 94324686
ENSG00000102710 13 36925520 36925520
...
我试着这样做:

cat out3 | awk '{ $3=$4; print; }'
但我得到了:

ENSG00000133789 11 
ENSG00000131626 11 
ENSG00000020922 11 
ENSG00000102710 13 
...
我的列是空格分隔的。我该怎么做

编辑:

我通过以下方式解决了这个问题:

awk -F' ' '{print $0" "$3}' out3 > out4

这是所有必要的。请注意,
awk
接受STDIN的输入,因此从
cat
awk
的管道是浪费过程和多余的
print
是默认的
awk
操作,因此为了简洁起见,可以省略它。

一般来说,复制最后一列

$ awk '{print $0,$NF}' file

原始文件中每行有3个字段,awk设置字段3等于字段4。但是后者不存在,因此是空的,所以您实际上清除了字段3。您应该将字段4设置为等于字段3(
$4=$3
awk'{print$0,$3}'文件
,谢谢您的解释!请注意,如果
$3
等于
0
,则无法打印一行。和的解决方案对此问题更具鲁棒性。请勿执行此操作!
$ awk '{print $0,$NF}' file