zoukankan      html  css  js  c++  java
  • linux系统中批量提取指定行的数据

    1、测试数据

    [root@centos79 test]# cat a.txt
    01 3 4
    02 f s
    03 t 3
    04 s d
    05 g i
    06 y e
    07 a w
    08 d g
    09 e w
    10 n u
    11 7 8
    12 3 s
    13 a d
    14 g e
    15 w a
    16 z v
    17 n m
    18 k p

    2、提取 3,5,7,8,9,15,17行

    使用sed

    [root@centos79 test]# ls
    a.txt  lines
    [root@centos79 test]# cat lines
    3
    5
    7
    8
    9
    15
    17
    [root@centos79 test]# cat a.txt
    01 3 4
    02 f s
    03 t 3
    04 s d
    05 g i
    06 y e
    07 a w
    08 d g
    09 e w
    10 n u
    11 7 8
    12 3 s
    13 a d
    14 g e
    15 w a
    16 z v
    17 n m
    18 k p
    [root@centos79 test]# for i in `cat lines`; do sed -n "$i"p a.txt >> result; done
    [root@centos79 test]# ls
    a.txt  lines  result
    [root@centos79 test]# cat result
    03 t 3
    05 g i
    07 a w
    08 d g
    09 e w
    15 w a
    17 n m

    使用awk

    [root@centos79 test]# ls
    a.txt  lines
    [root@centos79 test]# cat a.txt
    01 3 4
    02 f s
    03 t 3
    04 s d
    05 g i
    06 y e
    07 a w
    08 d g
    09 e w
    10 n u
    11 7 8
    12 3 s
    13 a d
    14 g e
    15 w a
    16 z v
    17 n m
    18 k p
    [root@centos79 test]# cat lines
    3
    5
    7
    8
    9
    15
    17
    [root@centos79 test]# for i in $(cat lines ); do awk -v a=$i 'NR == a' a.txt >> result; done
    [root@centos79 test]# cat result
    03 t 3
    05 g i
    07 a w
    08 d g
    09 e w
    15 w a
    17 n m

    使用while语句:

    [root@centos79 test]# ls
    a.txt  lines
    [root@centos79 test]# cat a.txt
    01 3 4
    02 f s
    03 t 3
    04 s d
    05 g i
    06 y e
    07 a w
    08 d g
    09 e w
    10 n u
    11 7 8
    12 3 s
    13 a d
    14 g e
    15 w a
    16 z v
    17 n m
    18 k p
    [root@centos79 test]# cat lines
    3
    5
    7
    8
    9
    15
    17
    [root@centos79 test]# cat lines | while read i; do sed -n "$i"p a.txt >> result; done
    [root@centos79 test]# cat result
    03 t 3
    05 g i
    07 a w
    08 d g
    09 e w
    15 w a
    17 n m

    while + awk

    [root@centos79 test]# ls
    a.txt  lines
    [root@centos79 test]# cat a.txt
    01 3 4
    02 f s
    03 t 3
    04 s d
    05 g i
    06 y e
    07 a w
    08 d g
    09 e w
    10 n u
    11 7 8
    12 3 s
    13 a d
    14 g e
    15 w a
    16 z v
    17 n m
    18 k p
    [root@centos79 test]# cat lines
    3
    5
    7
    8
    9
    15
    17
    [root@centos79 test]# cat lines | while read i; do awk -v a=$i 'NR == a' a.txt >> result; done
    [root@centos79 test]# cat result
    03 t 3
    05 g i
    07 a w
    08 d g
    09 e w
    15 w a
    17 n m
  • 相关阅读:
    技术债务MartinFlower
    如何定义产品愿景
    领域驱动设计阶段知识总结
    领域驱动设计的价值
    什么是数字产品
    NestOS 发布:基于华为欧拉开源系统的云底座操作系统
    架子鼓MIDI及相关软件
    TM4 JDK1.8连接SqlServer报错:The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL)
    关于GPL协议的理解(开源与商用、免费与收费的理解)
    nest js 限制客户端在一定时间内的请求次数
  • 原文地址:https://www.cnblogs.com/liujiaxin2018/p/15041075.html
Copyright © 2011-2022 走看看