linux 中删除除第一次匹配特定字符串所在行之外的所有行

001、shell实现

root@PC1:/home/test2# ls
test.txt
root@PC1:/home/test2# cat test.txt   ## 测试数据, 删除第一次匹配xpehh以外的所有匹配xpehh的行
01 ee ff
02 ee de
03 dd ee
04 jj xpehh
05 jj kk
06 ee de
07 mm xpehh
08 ff ww
09 jj kk
10 mm xpehh
11 dd ee
root@PC1:/home/test2# awk 'BEGIN{idx = 0} {if($0 ~ /xpehh/ && idx == 0 || $0 !~ /xpehh/) {print $0}; if($0 ~ /xpehh/) {idx++}}' test.txt
01 ee ff
02 ee de
03 dd ee
04 jj xpehh
05 jj kk
06 ee de
08 ff ww
09 jj kk
11 dd ee

002、python实现

root@PC1:/home/test2# ls
test.py  test.txt
root@PC1:/home/test2# cat test.txt
01 ee ff
02 ee de
03 dd ee
04 jj xpehh
05 jj kk
06 ee de
07 mm xpehh
08 ff ww
09 jj kk
10 mm xpehh
11 dd ee
root@PC1:/home/test2# cat test.py
#!/usr/bin/python

in_file = open("test.txt", "r")
out_file = open("result.txt", "w")
lines = in_file.readlines()

idx = 0
for i in lines:
    if idx == 0 and "xpehh" in i or "xpehh" not in i:
        out_file.write(i)
    if "xpehh" in i:
        idx = idx + 1

in_file.close()
out_file.close()
root@PC1:/home/test2# python test.py
root@PC1:/home/test2# ls
result.txt  test.py  test.txt
root@PC1:/home/test2# cat result.txt    ## 结果文件
01 ee ff
02 ee de
03 dd ee
04 jj xpehh
05 jj kk
06 ee de
08 ff ww
09 jj kk
11 dd ee

003、R实现

dir()
dat "test.txt")
result  vector()
idx = 0
for (i in 1:nrow(dat)) {
  if (sum(grepl("xpehh", dat[i,])) != 0 & idx == 0 |
      sum(grepl("xpehh", dat[i,])) == 0) {
      result  c(result, i)
  }
  if(sum(grepl("xpehh", dat[i,])) != 0){
    idx = idx + 1
  }
}
final  dat[result,]
final

linux 中删除除第一次匹配特定字符串所在行之外的所有行

Original: https://www.cnblogs.com/liujiaxin2018/p/16545714.html
Author: 小鲨鱼2018
Title: linux 中删除除第一次匹配特定字符串所在行之外的所有行

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/8475/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Linux内核剖析(二)Linux内核绪论

    什么是内核 内核是 操作系统最基本的部分。它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,并且内核决定一个程序在什么时候对某部分硬件操作多长时间。内核的…

    2022年8月24日
    0260
  • Ubuntu 启动ssh服务

    ubuntu sudo apt-get install openssh-server service sshd start service ssh status sudo ufw …

    Linux 2022年9月10日
    0220
  • Linux驱动面试题

    1、Linux设备中字符设备与块设备有什么主要的区别?请分别列举一些实际的设备说出它们是属于哪一类设备。 字符设备:字符设备是个能够像字节流(类似文件)一样被访问的设备,由字符设备…

    Linux 2022年8月24日
    0290
  • Linux下用netstat查看网络状态与端口情况

    在linux一般使用netstat 来查看系统端口使用情况步。 netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备…

    Linux 2022年8月24日
    0280
  • mysql使用注意

    MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。 最新的 UTF-8 规范只使用一到四个字节…

    Linux 2022年8月11日
    0290
  • 终于等到你: 图形化开源爬虫Hawk 3发布!

    超级图形化爬虫Hawk已经发布两年半时间了,2015年升级到第二版,收到上千条用户反馈(tucao),100多个红包,总共666块五毛~一直想攒着这笔钱,去北境之王天通苑的龙德商场…

    Linux 2022年8月26日
    0270
  • LVM扩容操作-Centos7

    生产环境要扩容,太久没试过LVM,记录一下走过的坑 [root@archive ~]# df -h #查看磁盘挂载,对/dev/mapper/vgnfs-lvdata进行扩容 文件…

    Linux 2022年8月26日
    0280
  • 不用密码使用ssh管理远程linux服务器

    ssh是个好东西啊,每次上到服务器运指如飞,总是暗爽不已。可是,一直以来都是用很长的密码(服务器安全性考虑),每次ssh时总是要打很长的密码,不爽啊。 虽然知道ssh可以用密钥的方…

    Linux 2022年8月26日
    0260
  • spingboot使用redis连接池报错

    配置如下,增加了连接池相关 redis: host: localhost port: 6379 database: 7 lettuce: pool: max-active: 20 …

    Linux 2022年9月14日
    0210
  • Ubuntu 安装 uget

    PPA方式 二进制包方式 包管理器方式 参考: Original: https://www.cnblogs.com/wpjamer/p/9982734.htmlAuthor: wp…

    Linux 2022年8月26日
    0230
  • Linux记录-ssh批量双向无密码登录

    1批量ssh无密码登录 bash;gutter:true;</p> <h1>!/bin/bash</h1> <p>set -e&lt…

    Linux 2022年8月24日
    0260
  • awk语法

    awk是一个非常棒的数字处理工具。相比于sed常常作用于一整行的处理,awk则比较倾向于将一行分为数个”字段”来处理。运行效率高,而且代码简单,对格式化的文…

    Linux 2022年8月26日
    0300
  • 关于Linux TCP “SACK PANIC” 远程拒绝服务漏洞的修复

    Linux 内核被曝存在TCP “SACK PANIC” 远程拒绝服务漏洞(漏洞编号:CVE-2019-11477,CVE-2019-11478,CVE-2…

    Linux 2022年8月24日
    0340
  • linux命令之tar 解压 压缩

    tar(全称:tape archive )命令用于备份文件。tar 是用来 创建或者 还原备份文件的工具程序,它可以加入,解开备份文件内的文件。tar linux说明 tar [&…

    Linux 2022年9月10日
    0410
  • 阿里云Redis开发规范

    (1)【建议】: 可读性和可管理性 以业务名(或数据库名)为前缀(防止key冲突),用冒号分隔,比如业务名:表名:id <span class="hljs-sele…

    Linux 2022年9月14日
    0290
  • Java系列 | Linux系统中运行JMeter脚本

    需求场景 在Windows环境下测试,并发数过大,整个主机直接崩掉 依赖说明 在Linux系统中运行JMeter脚本,需要有两个前提 1、Linux系统中配置好Java环境 2、L…

    Linux 2022年8月24日
    0240
  • wget命令8种实用用法

    大家好,我是良许。 wget 是一个可以从网络上下载文件的免费实用程序,它的工作原理是从 Internet 上获取数据,并将其保存到本地文件中或显示在你的终端上。 这实际上也是大家…

    Linux 2022年9月10日
    0270
  • 解决Ubuntu(20.04)和Windows10双系统时间不同步问题

    1. 原因分析 出现这种情况的原因是 Windows 和 Ubuntu它们在默认情况下看待硬件时间(主板上的BOIS显示的时间)的方式 不一样。 我们先来了解一下关于时间的概念 :…

    Linux 2022年9月10日
    0360
  • Redis (error) NOAUTH Authentication required.

    首先查看redis设置密码没 表示没有设置密码,设置redis密码 这个时候查看密码是会报错的。 需要noauth身份验证。 修改密码 Original: https://www….

    Linux 2022年9月14日
    0260
  • redis的三种集群方式

    请输入博文的阅读密码: Original: https://www.cnblogs.com/heqiyoujing/p/14494037.htmlAuthor: 何其小静Title…

    Linux 2022年9月14日
    0240
  • linux系统下深度学习环境搭建和使用

    作为一个AI工程师,对Linux的一些技能的掌握也能从一定层面反应工程师的资深水平。 要求1:基于SSH的远程访问(本篇文章) 能用一台笔记本电脑,远程登陆一台linux服务器 能…

    Linux 2022年8月20日
    0330
  • Linux常用磁盘管理命令详解

    du du命令用于查看文件和目录磁盘的使用空间。 命令语法: du [&#x53C2;&#x6570;] [&#x6587;&#x4EF6;&amp…

    Linux 2022年9月10日
    0260
  • Redis 用的很溜,了解过它用的什么协议吗?

    我是风筝,公众号「古时的风筝」,一个兼具深度与广度的程序员鼓励师,一个本打算写诗却写起了代码的田园码农!文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白…

    Linux 2022年9月14日
    0200
  • Linux如何设置时区/时间/上海时间

    https://blog.csdn.net/guofangsky/article/details/89088421 如下所示, 一直显示 EDT (Eastern Daylight…

    Linux 2022年8月24日
    0260
  • hexo部署码云后报错(ERROR Deployer not found: git)

    解决办法:npm install –save hexo-deployer-git 一个人必须能够忍受孤独,才能保持繁荣。生活中最痛苦的事是你舍不得放手,你不属于自己的幸福。及时放…

    Linux 2022年8月30日
    0300
  • CentOS7yum安装LNMP

    一、搭建mysql环境 因为是centos7,yum源默认自带的是 mariadb数据库。 1、安装maraidb客户端工具 //安装 mariadb 客户端工具yum insta…

    Linux 2022年8月30日
    0270

发表回复

登录后才能评论
免费咨询
免费咨询
扫码关注
扫码关注
联系站长

站长Johngo!

大数据和算法重度研究者!

持续产出大数据、算法、LeetCode干货,以及业界好资源!

2022012703491714

微信来撩,免费咨询:xiaozhu_tec

分享本页
返回顶部