linux文件内加一列内容,linux文件内容列传行_行转列

================ 文件内容列传行_行转列  ================

一、列转行

1、编辑测试文件

vi log.txt

16:23:00

8.2%

1773620k

16:23:01

3%

1770024k

16:23:02

5.7%

1766272k

16:23:03

4%

1766160k

16:23:04

7.9%

1775436k

16:23:05

2.5%

1775488k

16:23:06

3.9%

1770340k2、编辑列转行脚本

vi colline.sh

#!/bin/bash

while read col1 && read col2 && read col3;

do

echo -ne "$col1 $col2 $col3"

echo

done

3、运行脚本

sh colline.sh log.txt

输出:

16:23:00 8.2% 1773620k

16:23:01 3% 1770024k

16:23:02 5.7% 1766272k

16:23:03 4% 1766160k

16:23:04 7.9% 1775436k

16:23:05 2.5% 1775488k

16:23:06 3.9% 1770340k

二、行转列

1、编辑测试文件

vi f.txt

1 2 3 4 5

1 2 3 4 6

1 2 3 4 7

1 2 3 4 8

1 2 3 4 9

2 3 4 5 10

7 8 9 10 11

12 13 14 15 16

2、运行列转行_行转列命令

awk '{for(i=1;i<=NF;i++)a[NR,i]=$i}END{for(j=1;j<=NF;j++)for(k=1;k<=NR;k++)printf k==NR?a[k,j] RS:a[k,j] FS}' f.txt

输出:

1 1 1 1 1 2 7 12

2 2 2 2 2 3 8 13

3 3 3 3 3 4 9 14

4 4 4 4 4 5 10 15

5 6 7 8 9 10 11 16

备注:文件至少需要两列数据===== 文件内容输出为一行

编辑文件:

vi file.txt

1 2 3 4 5 6

a b c d e f

2 3 4 5 6 7

q a z w s x

3 4 5 6 7 8

awk -F "+" '{for(i=1;i<=NF;i++) a[i,NR]=$i}END{for(i=1;i<=NF;i++) {for(j=1;j<=NR;j++) printf a[i,j] " ";print ""}}' file.txt

输出:

1 2 3 4 5 6 a b c d e f 2 3 4 5 6 7 q a z w s x 3 4 5 6 7 8

cat file.txt |tr "\n" ","|sed -e 's/,$/\n/'

输出:

1 2 3 4 5 6,a b c d e f,2 3 4 5 6 7,q a z w s x,3 4 5 6 7 8

cat file.txt |tr "\n" " "|sed -e 's/,$/\n/'

输出:

1 2 3 4 5 6 a b c d e f 2 3 4 5 6 7 q a z w s x 3 4 5 6 7 8

--->行转列_列转行

vi test.txt

1 2 3 4 5 6 7 8

awk -F " +" '{for(i=1;i<=NF;i++) a[i,NR]=$i}END{for(i=1;i<=NF;i++) {for(j=1;j<=NR;j++) printf a[i,j] " ";print ""}}' test.txt

输出:

1

2

3

4

5

6

7

8

vi test.txt

1

2

3

4

5

6

7

8

awk -F " +" '{for(i=1;i<=NF;i++) a[i,NR]=$i}END{for(i=1;i<=NF;i++) {for(j=1;j<=NR;j++) printf a[i,j] " ";print ""}}' test.txt

输出:

1 2 3 4 5 6 7 8

标签:23,16,vi,转行,列传,转列,linux,txt

来源: https://www.cnblogs.com/lz-2021/p/14693141.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值