首页 > 系统相关 >Linux 中awk命令根据索引文件批量提取列和行

Linux 中awk命令根据索引文件批量提取列和行

时间:2023-10-12 12:22:44浏览次数:78  
标签:index test2 pc1 索引 列和行 Linux awk txt root

 

001、批量提取列,根据索引index.txt文件批量提取2、4、8、9列

[root@pc1 test2]# ls
a.txt  index.txt
[root@pc1 test2]# cat a.txt               ## 测试文件
001 002 003 004 005 006 007 008 009 010
011 012 013 014 015 016 017 018 019 020
021 022 023 024 025 026 027 028 029 030
031 032 033 034 035 036 037 038 039 040
041 042 043 044 045 046 047 048 049 050
051 052 053 054 055 056 057 058 059 060
061 062 063 064 065 066 067 068 069 070
071 072 073 074 075 076 077 078 079 080
081 082 083 084 085 086 087 088 089 090
091 092 093 094 095 096 097 098 099 100
[root@pc1 test2]# cat index.txt       ## 索引文件
2
4
8
9
[root@pc1 test2]# awk '{if(NR == FNR) {ay[NR] = $0; idx++} else {for(i = 1; i < idx; i++) printf("%s ", $ay[i]); print $ay[i]}}' index.txt a.txt
002 004 008 009                                    ## 批量提取
012 014 018 019
022 024 028 029
032 034 038 039
042 044 048 049
052 054 058 059
062 064 068 069
072 074 078 079
082 084 088 089
092 094 098 099

 

002、批量提取行,根据索引文件,批量提取2、4、8、9行

[root@pc1 test2]# ls
a.txt  index.txt
[root@pc1 test2]# cat index.txt     ## 索引文件
2
4
8
9
[root@pc1 test2]# awk '{if(NR == FNR) {ay[$0]} else {if(FNR in ay) print $0}}' index.txt a.txt
011 012 013 014 015 016 017 018 019 020        ## 批量提取 索引文件中的工行
031 032 033 034 035 036 037 038 039 040
071 072 073 074 075 076 077 078 079 080
081 082 083 084 085 086 087 088 089 090

 。

 

标签:index,test2,pc1,索引,列和行,Linux,awk,txt,root
From: https://www.cnblogs.com/liujiaxin2018/p/17759226.html

相关文章

  • 面试被问 Linux 命令 su 和 sudo 的区别
    之前一直对 su 和 sudo 这两个命令犯迷糊,最近专门搜了这方面的资料,总算是把两者的关系以及用法搞清楚了,这篇文章来系统总结一下。1、准备工作因为本篇博客中涉及到用户切换,所以我需要提前准备好几个测试用户,方便后续切换。Linux中新建用户的命令是 useradd ,一般系统中这个命......
  • kali linux 设置固定IP
    1.修改文件/etc/network/interfaces┌──(kali㉿kali)-[~]└─$sudovi/etc/network/interfaces#Thisfiledescribesthenetworkinterfacesavailableonyoursystem#andhowtoactivatethem.Formoreinformation,seeinterfaces(5).source/etc/network/in......
  • linux系统和windows系统检测磁盘大小报警
    1.应用场景需要往磁盘中存储图片和或者数据,需要检测磁盘大小,当小于5GB的时候提示用户,并停止存储图片和数据,避免磁盘塞满,无法启动系统或者操作电脑;2.实现方法用一个定时器去定时查询磁盘空间大小,linux系统,采用QProess执行命令,然后解析命令返回值,获取剩余的磁盘空间voidFaceM......
  • 小干货~ NFS在Linux系统中的应用
    Linux系统中的经典的语句”一切皆文件”,意思就是说在Linux系统中,我们要达成任何目标,都是通过配置文件去实现的。既然这样,那我们就少不了跟文件打交道,今天就跟大家分享下如何在Linux系统中配置网络文件系统(NetworkFileSystem,NFS)服务来达到Linux系统之间的文件共享的目的。......
  • ulimit命令-限制linux内核的资源大小-(用户级,系统级2种限制)
    ulimit命令-限制linux内核的资源大小ulimit-n查看linux系统的最大文件打开数设置最大文件打开数的大小:临时设置:ulimit-SHn 65535-S表示软限制-H表示硬限制永久生效:文件:/etc/security/limits.conf添加2行:*  soft nofile65535* hard  nofile65535上面的*......
  • [扫盲]在linux上查询gpu占用
    参考资料:how-to-measure-gpu-usage按显卡厂家来区分:NvidiaGPU:nvidia-smi或者gpustatIntelGPU:intel-gpu-toolsAmdGPU:aticonfig--odgc--odgt......
  • linux 中 awk直接引入外部变量
     001、[root@pc1test1]#lsa.txt[root@pc1test1]#a=4[root@pc1test1]#cata.txt1[root@pc1test1]#awk'{for(i=1;i<="'$a'";i++)print"xx"}'a.txtxxxxxxxx 。 ......
  • linux 中实现将 不连续的一列数字间隔补充为0或者指定任意字符
     001、[root@pc1test2]#lsindex.txt[root@pc1test2]#catindex.txt##测试的一列数字2348911[root@pc1test2]#awk'{if(NR==1){a=$0-0-1;for(i=1;i<=a;i++){print"0"};print$0;tmp=$0}elseif($0-tmp!=1){a=......
  • Linux终端使用技巧
    Linux终端使用技巧1.命令提示符显示提示符格式[root@centos8~]#echo$PS1\[\e[1;35m\][\u@\h\W]\$\[\e[0m\]修改提示符格式范例PS1="\[\e[1;5;41;33m\][\u@\h\W]\\$\[\e[0m\]"PS1="\[\e[1;32m\][\t\[\e[1;33m\]\u\[\e[35m\]@\h\[\e[1;31m......
  • Linux p4 Vim使用
    【学习课程】:【【小白入门通俗易懂】2021韩顺平一周学会Linux】https://www.bilibili.com/video/BV1Sv411r7vd/?p=14&share_source=copy_web&vd_source=2c07d62293f5003c919b2df9b2e0549eVim快速入门vi和vim的基本介绍Linux系统会内置vi文本编辑器Vim具有程序编辑的能力,可......