文件的行到列转换

文件的行到列转换

假设我有一个文件:

文件1:

PAPER  TEAM  MANISH NISHA GARIMA JYOUTI ........etc 

我想要的文件2:

PAPER    
TEAM
MANISH
NISHA
GARIMA    
JYOUTI

File1 的行到列转换。

答案1

使用tr,将每个重复的空格字符 ( ) 替换为单个换行符 ( \n) 。

tr -s ' '  '\n'< infile > outfile

但我想你想要这样的东西吗?

原来的 转置
0 1 2 3 
a bcd
# $ @ %

0 a # 
1 b $
2 c @
3 d %

我们可以这样awk做:

awk '{ for (i=1; i<=NF; i++) RtoC[i]= (i in RtoC?RtoC[i] OFS :"") $i; } 
    END{ for (i=1; i<=NF; i++) print RtoC[i] }' infile

这会将每个相同的字段编号位置连接在一起,并打印END结果,即第一列中的第一行,第二列中的第二行,等等。当然,输入文件仅限于您的内存大小。

答案2

您还可以使用以下fmt命令:

~$ cat f
PAPER  TEAM  MANISH NISHA GARIMA JYOUTI
~$ fmt -1 f
PAPER
TEAM
MANISH
NISHA
GARIMA
JYOUTI

答案3

GNU 数据混合:

$ datamash -W transpose <file
PAPER
TEAM
MANISH
NISHA
GARIMA
JYOUTI

答案4

使用awk,将输出字段分隔符 ( OFS) 设置为记录(行)分隔符 ( RS):

awk '{OFS=RS;$1=$1}1' file > file2

相关内容