Chinaunix

标题: bash处理多行转成多列的文本 [打印本页]

作者: bobower    时间: 2019-02-22 15:29
标题: bash处理多行转成多列的文本
大家好,本人有个需求想请大神帮忙看下,需求如下:
一个文本文件 example.txt内容如下:
name a b c
age 1 2 3

说明:
上面文件中只有两行,但有4列,每列只有一个空格分隔,现在需要使用bash命令处理这个文本,处理后的结果如下:
name age
a 1
b 2
c 3

请问用命令如何实现,多谢了~!


作者: csccyab    时间: 2019-02-22 15:49
awk '{for(i=1;i<=NF;i++)a[i,NR]=$i; if(max_nf<NF) max_nf=NF; max_nr=NR} END{ for(i=1;i<=max_nf;i++){ for(j=1;j<=max_nr;j++) printf("%s ", a[i,j]); printf("\n")}}' 1.txt

name age
a 1
b 2
c 3



作者: bobower    时间: 2019-02-22 16:05
回复 2# csccyab

大神,请收下膝盖~!
作者: christmas1102    时间: 2019-02-22 17:01
  1. awk '{for(i=1;i<=NF;i++){a[NR,i]=$i}}END{for(i=1;i<=NF;i++){for(x=1;x<=NR;x++){printf a[x,i] " "}print ""}}' urfile
复制代码


作者: 本友会机友会摄友会    时间: 2019-02-23 14:21
提示: 作者被禁止或删除 内容自动屏蔽
作者: wh7211    时间: 2019-02-23 15:09
回复 1# bobower


  1. awk '{for(i=1;i<=NF;i++){a[i]=a[i]?a[i]" "$i:$i}}END{for(i in a){print a[i]}}' example.txt
复制代码

作者: bobower    时间: 2019-02-25 18:39
谢谢上面各位大大,多谢了




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2