linux中將指定行數據合並為一行數據


1、測試數據

root@DESKTOP-1N42TVH:/home/test# ls
a.txt
root@DESKTOP-1N42TVH:/home/test# cat a.txt
01 11
02 12
03 13
04 14
05 15
06 16
07 17
08 18
09 19
10 20

 

2、將每兩行數據合並為一行數據

a、sed實現

root@DESKTOP-1N42TVH:/home/test# ls
a.txt
root@DESKTOP-1N42TVH:/home/test# cat a.txt
01 11
02 12
03 13
04 14
05 15
06 16
07 17
08 18
09 19
10 20
root@DESKTOP-1N42TVH:/home/test# sed 'N; s/\n/ /' a.txt ## 將每兩行中間的換行符替換為空格 01 11 02 12
03 13 04 14
05 15 06 16
07 17 08 18
09 19 10 20

 

b、awk實現

root@DESKTOP-1N42TVH:/home/test# ls
a.txt
root@DESKTOP-1N42TVH:/home/test# cat a.txt
01 11
02 12
03 13
04 14
05 15
06 16
07 17
08 18
09 19
10 20
root@DESKTOP-1N42TVH:/home/test# awk '{if(NR % 2 == 0) {print $0} else {printf("%s ", $0)}}' a.txt 01 11 02 12
03 13 04 14
05 15 06 16
07 17 08 18
09 19 10 20

 

c、paste實現

root@DESKTOP-1N42TVH:/home/test# ls
a.txt
root@DESKTOP-1N42TVH:/home/test# cat a.txt
01 02
03 04
05 06
07 08
09 10
11 12
13 14
15 16
17 18
19 20
root@DESKTOP-1N42TVH:/home/test# cat a.txt | paste - -
01 02   03 04
05 06   07 08
09 10   11 12
13 14   15 16
17 18   19 20
root@DESKTOP-1N42TVH:/home/test# cat a.txt | paste - - -d " "
01 02 03 04
05 06 07 08
09 10 11 12
13 14 15 16
17 18 19 20

 

 

3、將每三行數據合並為一行數據

a、awk實現

root@DESKTOP-1N42TVH:/home/test# ls
a.txt
root@DESKTOP-1N42TVH:/home/test# cat a.txt
01 11
02 12
03 13
04 14
05 15
06 16
07 17
08 18
09 19
10 20
root@DESKTOP-1N42TVH:/home/test# awk '{if(NR % 3 == 0) {print $0} else {printf("%s ", $0)}}' a.txt ## 不完整行最后缺少空格 01 11 02 12 03 13
04 14 05 15 06 16
07 17 08 18 09 19
10 20 root@DESKTOP-1N42TVH:/home/test# awk '{if(NR % 3 == 0) {print $0} else {printf("%s ", $0)}}' a.txt | sed '$ s/$/\n/' ## sed添加空格
01 11 02 12 03 13
04 14 05 15 06 16
07 17 08 18 09 19
10 20
root@DESKTOP-1N42TVH:/home/test# awk '{if(NR % 3 == 0) {print $0} else {printf("%s ", $0)}}' a.txt | sed '$ s/$/\n/'
01 11 02 12 03 13
04 14 05 15 06 16
07 17 08 18 09 19
10 20

 

b、paste實現

root@DESKTOP-1N42TVH:/home/test# ls
a.txt
root@DESKTOP-1N42TVH:/home/test# cat a.txt
01 02
03 04
05 06
07 08
09 10
11 12
13 14
15 16
17 18
19 20
root@DESKTOP-1N42TVH:/home/test# cat a.txt | paste - - -    ## 每三行合並為一行
01 02   03 04   05 06
07 08   09 10   11 12
13 14   15 16   17 18
19 20
root@DESKTOP-1N42TVH:/home/test# cat a.txt | paste - - - -d " " ## 指定輸出分割符
01 02 03 04 05 06
07 08 09 10 11 12
13 14 15 16 17 18
19 20

 

 

 

4、每四行數據合並為一行數據

a、awk實現

root@DESKTOP-1N42TVH:/home/test# ls
a.txt
root@DESKTOP-1N42TVH:/home/test# cat a.txt
01 11
02 12
03 13
04 14
05 15
06 16
07 17
08 18
09 19
10 20
root@DESKTOP-1N42TVH:/home/test# awk '{if(NR % 4 == 0) {print $0} else {printf("%s ", $0)}}' a.txt
01 11 02 12 03 13 04 14
05 15 06 16 07 17 08 18
09 19 10 20 root@DESKTOP-1N42TVH:/home/test# awk '{if(NR % 4 == 0) {print $0} else {printf("%s ", $0)}}' a.txt | sed '$ s/$/\n/'
01 11 02 12 03 13 04 14
05 15 06 16 07 17 08 18
09 19 10 20
root@DESKTOP-1N42TVH:/home/test# awk '{if(NR % 4 == 0) {print $0} else {printf("%s ", $0)}}' a.txt | sed '$ s/$/\n/' 
01 11 02 12 03 13 04 14
05 15 06 16 07 17 08 18
09 19 10 20

 

b、paste 實現

root@DESKTOP-1N42TVH:/home/test# ls
a.txt
root@DESKTOP-1N42TVH:/home/test# cat a.txt
01 02
03 04
05 06
07 08
09 10
11 12
13 14
15 16
17 18
19 20
root@DESKTOP-1N42TVH:/home/test# cat a.txt | paste - - - -
01 02   03 04   05 06   07 08
09 10   11 12   13 14   15 16
17 18   19 20
root@DESKTOP-1N42TVH:/home/test# cat a.txt | paste - - - - -d " " ## 將四行合並為一行
01 02 03 04 05 06 07 08
09 10 11 12 13 14 15 16
17 18 19 20

 


免責聲明!

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



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