linux 系統中實現列轉行 及 行轉列


 列轉行

1、paste

liujiaxin01@PC1:~/test$ seq -f %02g 10
01
02
03
04
05
06
07
08
09
10
liujiaxin01@PC1:~/test$ seq -f %02g 10 > a.txt
liujiaxin01@PC1:~/test$ cat a.txt 01
02
03
04
05
06
07
08
09
10
liujiaxin01@PC1:~/test$ paste -s -d " " a.txt 01 02 03 04 05 06 07 08 09 10

 

2、tr + sed

liujiaxin01@PC1:~/test$ cat a.txt
01
02
03
04
05
06
07
08
09
10
liujiaxin01@PC1:~/test$ tr "\n" " " < a.txt | sed 's/$/\n/'
01 02 03 04 05 06 07 08 09 10

 

3、xargs(這個命令有局限性, 行數有限制)

liujiaxin01@PC1:~/test$ cat a.txt
01
02
03
04
05
06
07
08
09
10
liujiaxin01@PC1:~/test$ cat a.txt | xargs 01 02 03 04 05 06 07 08 09 10

 

4、awk

liujiaxin01@PC1:~/test$ cat a.txt
01
02
03
04
05
06
07
08
09
10
liujiaxin01@PC1:~/test$ awk '{printf("%s ", $0)} END {printf("\n")}' a.txt 01 02 03 04 05 06 07 08 09 10

 

行轉列

測試數據

liujiaxin01@PC1:~/test$ seq -f %02g 10 | paste -d " " -s > a.txt
liujiaxin01@PC1:~/test$ cat a.txt
01 02 03 04 05 06 07 08 09 10

 

1、tr

liujiaxin01@PC1:~/test$ cat a.txt
01 02 03 04 05 06 07 08 09 10
liujiaxin01@PC1:~/test$ cat a.txt | tr " " "\n"
01
02
03
04
05
06
07
08
09
10

 

2、sed

liujiaxin01@PC1:~/test$ cat a.txt
01 02 03 04 05 06 07 08 09 10
liujiaxin01@PC1:~/test$ sed 's/ /\n/g' a.txt 01
02
03
04
05
06
07
08
09
10

 

3、xargs(有局限性)

liujiaxin01@PC1:~/test$ cat a.txt
01 02 03 04 05 06 07 08 09 10
liujiaxin01@PC1:~/test$ cat a.txt | xargs -n 1
01
02
03
04
05
06
07
08
09
10

 

4、awk

liujiaxin01@PC1:~/test$ cat a.txt
01 02 03 04 05 06 07 08 09 10
liujiaxin01@PC1:~/test$ awk '{ORS = " "}{print $0} END {printf("\n")}' a.txt 01 02 03 04 05 06 07 08 09 10

 

5、awk

liujiaxin01@PC1:~/test$ cat a.txt
01 02 03 04 05 06 07 08 09 10
liujiaxin01@PC1:~/test$ awk '{for(i = 1; i <= NF; i++) printf("%s%s", $i,"\n")}' a.txt 01
02
03
04
05
06
07
08
09
10

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM