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
  • 相关阅读:
    channels的使用
    paramiko模块(远程操作服务器)
    GIT版本管理工具教程
    Python中的魔术方法详解(双下方法)
    Django中Q查询及Q()对象
    Python3操作Excel
    漏洞复现环境集锦-Vulhub
    CVE-2019-0193 远程命令执行-漏洞复现
    Weblogic-SSRF 漏洞复现
    CVE-2020-0796 永恒之蓝?
  • 原文地址:https://www.cnblogs.com/liujiaxin2018/p/15041075.html
Copyright © 2011-2022 走看看