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
  • 相关阅读:
    Java魔法堂:类加载器入了个门
    Java魔法堂:类加载机制入了个门
    FFDshow video encoder -CLSID
    在Ubuntu下利用Eclipse调试FFmpeg《转》
    vc/vs开发的应用程序添加dump崩溃日志<转>
    Directshow 采集与FFDshow 冲突
    dshow采集过程
    innosetup 安装前、卸载前判断是否有进程正在运行<转>
    手游加速器:[求助]安卓端 手游变速器,类似光环助手的实现方式是怎样的?
    网易云音乐api资料
  • 原文地址:https://www.cnblogs.com/liujiaxin2018/p/15041075.html
Copyright © 2011-2022 走看看