【发布时间】:2018-07-02 04:31:47
【问题描述】:
我有一个制表符分隔的文件,它有 5 列:
file1.txt
1 101 T A 0.36
1 101 T C 0.43
1 101 T G 0.28
1 102 A C 0.36
我想打印最后一列两次,所以我想要:
1 101 T A 0.36 0.36
1 101 T C 0.43 0.43
1 101 T G 0.28 0.28
1 102 A C 0.36 0.36
我试试:
cat file1.txt | awk -v OFS="\t" '$1=$1'| awk '{print $1,$2,$3,$4,$5,$5}'
仅将最后一列输出为:
0.36
0.43
0.28
0.36
我也试过了:
awk '{print $0,$5}' file1.txt
打印相同: 仅将最后一列输出为:
0.36
0.43
0.28
0.36
当我有cut命令时,我可以分别打印出cut -f1和cut -f2等等,所以没有问题。
我不明白发生了什么,想问一下,我怎样才能将最后一列打印两次?
【问题讨论】:
-
为什么需要管道中的第一个
awk命令? -
@Barmar 作为警告,我想将分隔符更改为制表符
-
你的第一个命令行对我来说很好用。我敢打赌您的文件有 CRLF 换行符,请使用
dos2unix进行转换。 -
@bapors see en.wikipedia.org/wiki/… ...你可以使用
cat -e file1.txt来检查它。如果你在行尾看到^M$,你有dos风格的行尾