将行重新排列到列awk或shell

时间:2016-04-10 07:21:00

标签: perl shell awk

给定文本文件file.txt,转置其内容。

例如,如果file.txt具有以下内容:

name age
alice 21
ryan 30

输出以下内容:

name alice ryan
age 21 30

1 个答案:

答案 0 :(得分:0)

使用shell utils cut 粘贴

for f in 1 2 ; do cut -d ' ' -f $f file.txt ; done | paste -d ' ' - - -

输出:

  

姓alice ryan
  年龄21 30岁

工作原理。 file.txt 中的字段分隔符是空格,因此剪切粘贴(其中包含选项卡作为默认字段分隔符)必须使用 -d' ' 选项。我们事先知道 file.txt 中有两列, for 循环因此需要两次传递。通过#1,剪切 file.txt 中选择第1列,传递#2,第2列。当 for 循环结束时,将什么内容输入管道' |'看起来像:

  

姓alice ryan年龄21 30岁

然后粘贴一次输出三个(因此是三个连字符)。