【问题标题】:printing the column multiple times with awk [duplicate]使用 awk 多次打印该列 [重复]
【发布时间】: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 -f1cut -f2等等,所以没有问题。

我不明白发生了什么,想问一下,我怎样才能将最后一列打印两次?

【问题讨论】:

  • 为什么需要管道中的第一个awk 命令?
  • @Barmar 作为警告,我想将分隔符更改为制表符
  • 你的第一个命令行对我来说很好用。我敢打赌您的文件有 CRLF 换行符,请使用 dos2unix 进行转换。
  • @bapors see en.wikipedia.org/wiki/… ...你可以使用cat -e file1.txt来检查它。如果你在行尾看到^M$,你有dos风格的行尾

标签: linux awk


【解决方案1】:

要打印两次最后一个字段

awk '{ $NF=$NF OFS $NF }1' OFS='\t' file

输出:

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

【讨论】:

  • 不.. 它仍然打印 $1,$5, $5
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-16
  • 1970-01-01
  • 2015-02-04
  • 2016-07-30
  • 2011-04-26
  • 1970-01-01
相关资源
最近更新 更多