首页 > 系统相关 >linux 中实现批量抽取指定的行

linux 中实现批量抽取指定的行

时间:2023-10-11 22:35:45浏览次数:47  
标签:test1 index 抽取 批量 pc1 cat linux txt root

 

001、测试数据

[root@pc1 test1]# ls
a.txt  index.txt
[root@pc1 test1]# cat a.txt           ## 测试文件
01 02 1
03 04 2
05 06 3
07 08 4
09 10 5
11 12 6
13 14 7
15 16 8
17 18 9
19 20 10
21 22 11
23 24 12
25 26 13
[root@pc1 test1]# cat index.txt      ## 抽取索引
2 4
5 8
9 12

 

002、方法1 借助循环 + sed实现

[root@pc1 test1]# ls
a.txt  index.txt                                                ## 批量抽取
[root@pc1 test1]# cat index.txt | while read {i,j}; do sed -n "$i, $j"p a.txt >> result.txt; done
[root@pc1 test1]# ls
a.txt  index.txt  result.txt
[root@pc1 test1]# cat result.txt         ## 结果文件
03 04 2
05 06 3
07 08 4
09 10 5
11 12 6
13 14 7
15 16 8
17 18 9
19 20 10
21 22 11
23 24 12
[root@pc1 test1]# cat index.txt           ## 索引行
2 4
5 8
9 12

 

003、方法2 循环 + awk实现

[root@pc1 test1]# ls
a.txt  index.txt                                                  ## 循环 + awk实现
[root@pc1 test1]# cat index.txt | while read {i,j}; do awk -v a=$i -v b=$j 'NR >= a && NR <= b' a.txt >> result.txt; done
[root@pc1 test1]# ls
a.txt  index.txt  result.txt
[root@pc1 test1]# cat result.txt         ## 结果文件
03 04 2
05 06 3
07 08 4
09 10 5
11 12 6
13 14 7
15 16 8
17 18 9
19 20 10
21 22 11
23 24 12
[root@pc1 test1]# cat index.txt          ## 索引文件
2 4
5 8
9 12

 

 004、方法3 

a、

[root@pc1 test1]# ls
a.txt  index.txt
[root@pc1 test1]# cat index.txt | while read {i,j}; do seq $i $j >> index2.txt; done    ##  将索引值展开
[root@pc1 test1]# cat index2.txt
2
3
4
5
6
7
8
9
10
11
12                      ## 对展开的索引值进行迭代
[root@pc1 test1]# for i in $(cat index2.txt); do sed -n "$i"p a.txt >> result1.txt; done
[root@pc1 test1]# for i in $(cat index2.txt); do awk -v a=$i 'NR == a' a.txt >> result2.txt; done

 

 b、 查看结果

 

以上均需要对 a.txt进行多次读取,文件大时,速度太慢。

 

005、方法4

 

标签:test1,index,抽取,批量,pc1,cat,linux,txt,root
From: https://www.cnblogs.com/liujiaxin2018/p/17758383.html

相关文章

  • linux文件权限
    基本权限UGO:U:所有者G:属组O:其他用户设置属性与权限chown:修改文件属性属组 例如:chownu1file1修改file1的所有者为u1,chownu1.g1file1修改file1的所有者为u1,所属组为g1chgrp:修改文件属组 例如:chgrplinux1file1修改所属组为linux1......
  • oracle11g linux环境安装
    【0】需求在centos7上安装oracle11G1204,有7个文件。【1】环境配置(1.1)修改主机名【1】hostnamenew_hostname#直接修改本地主机名 hostnamectlset-hostnamenew_hostname  【2】vi /etc/sysconfig/network#修改网......
  • linux socket地址
    socket地址://socket地址其实是一个结构体,封装端口号和IP等信息。后面的socket相关的API需要使用到这个socket地址。//客户端  -->  服务器(IP  、Port)通用socket地址:socket网络编程接口中表示socket地址是结构体sockaddr,其定义如下:(IPv4......
  • Linux 中如何安全地抹去磁盘数据?
    哈喽大家好,我是咸鱼离过职的小伙伴都知道,离职的时候需要上交公司电脑,但是电脑里面有许多我们的个人信息(聊天记录、浏览记录等等)所以我们就需要先把这些信息都删除,确保无法恢复之后才上交即有些情况下我们不得不以一种确保无法恢复的方式从磁盘上擦除所有信息许多小伙伴可能认......
  • 软件测试|Linux三剑客之sed命令详解
    简介sed(StreamEditor)是一款流式文本编辑器,在Linux和类Unix系统中广泛使用。它的设计目的是用于对文本进行处理和转换,可以用于替换、删除、插入、打印等操作。sed命令通过逐行处理文本,允许您使用简单的命令来编辑大量文本数据。本文将详细介绍sed命令的基本用法和一些常......
  • 软件测试|Linux三剑客之grep命令详解
    简介grep是一款在Linux和类Unix系统中广泛使用的文本搜索工具。它的名字来源于GlobalRegularExpressionPrint(全局正则表达式打印),它的主要功能是根据指定的模式(正则表达式)在文本文件中搜索并打印匹配的行。grep非常强大且灵活,可以用于日志分析、文件过滤、代码搜索等多......
  • 软件测试|Linux 基础教程:创建和删除目录
    简介在Linux系统中,创建和删除目录是非常常见的操作。目录是用于组织文件和其他目录的一种结构,它们是组织文件系统的重要组成部分。本文将介绍如何在Linux系统中创建和删除目录。创建目录在Linux中,可以使用mkdir命令来创建一个新的目录。mkdir是MakeDirectory(创建目......
  • 软件测试|Linux三剑客之awk命令详解
    简介awk是一种强大的文本处理工具,在Unix和类Unix系统中广泛使用。它允许您在文本文件中进行复杂的数据处理和格式化输出。awk的名字是根据它的三位创始人Aho、Weinberger和Kernighan姓氏的首字母命名的。本文将详细介绍awk命令的基本用法和一些常见的用例。awk基本语......
  • 软件测试|Linux下Python安装配置指南
    在Linux中安装Python是一个简单而且重要的过程,因为Python是一种广泛使用的编程语言,许多系统工具和应用都依赖于它。在本文中,我将详细介绍如何在Linux系统中安装Python。请注意,在本文中,我将以Centos为例,但是这些步骤大多数也适用于其他基于RedHat的发行版。对于其他发行版,请使用......
  • linux 服务器 多网口判断网卡名字和实际网卡口顺序 对应关系
    #!/bin/bashmac_addresses=($(dmesg|grep"eth"|grep"PCIe"|awk-F'''{print$8}'))count=0formacin"${mac_addresses[@]}";do((count++))interface=$(ifconfig|grep-B4"$mac"|gr......