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
  • 相关阅读:
    利用Vista新技术WCF开发构建服务系统
    WCF开发入门的六个步骤
    C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(一)让物体动起来①
    silverlight
    初探C#3.0
    通过托管代码和 Windows Vista 智能卡 API 来保护您的数据
    用例图
    类图
    Win7下MSN显示两个窗口问题
    设计模式初探
  • 原文地址:https://www.cnblogs.com/liujiaxin2018/p/15041075.html
Copyright © 2011-2022 走看看