• 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
  • 相关阅读:
    关于vs的网站发布
    gaga...
    将gridView中的数据导出 并保存到excel中
    ASP.NET 2.0 Treeview Checkboxes Check All Javascript
    写一个自动编号的存储过程
    获取一个部门的所有下级部门
    相同则写入组合
    jquery html form
    repeater合并单元格
    VS2010 快捷键大全
  • 原文地址:https://www.cnblogs.com/liujiaxin2018/p/15041075.html
Copyright © 2020-2023  润新知