首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在VimVi删除、多行、范围、所有及包含模式

使用linux服务器,免不了和vi编辑打交道,命令行下删除数量少还好,如果删除很多,光靠删除键一点点删除真的是头痛,还好Vi有快捷命令可以删除多行、范围。 删除 在Vim删除一命令是dd。...以下是删除分步说明: 1、按Esc键进入正常模式。 2、将光标放在要删除上。 3、键入dd并按E​​nter键以删除该行。 注:多次按dd将删除多行。...删除范围 删除一系列语法如下: :[start],[end]d 例如,要删除从3到5,您可以执行以下操作: 1、按Esc键进入正常模式。 2、输入:3,5d,然后按Enter键以删除。...删除包含模式 基于特定模式删除多行语法如下: :g//d 全局命令(g)告诉删除命令(d)删除所有包含。 要匹配与模式不匹配,请在模式之前添加感叹号(!): :g!.../foo/d-删除所有不包含字符串“foo”。 :g/^#/d-从Bash脚本删除所有注释,模式^#表示每行以#开头。 :g/^$/d-删除所有空白,模式^$匹配所有空行。

77.8K32
您找到你想要的搜索结果了吗?
是的
没有找到

Linux 删除文本重复

在进行文本处理时候,我们经常遇到要删除重复情况。那怎么解决呢? 下面就是三种常见方法? 第一,用sort+uniq,注意,单纯uniq是不行。...shell> sort -k2n file | uniq 这里我做了个简单测试,当file重复不再一起时候,uniq将服务删除所有的重复。...经过排序后,所有相同行都在相邻,因此unqi可以正常删除重复。 第二,用sort+awk命令,注意,单纯awk同样不行,原因同上。...P; D' 最后附一个必须先用sort排序文本例子,当然,这个需要用sort排序原因是很简单,就是后面算法设计时候“局部性”,相同可能分散出现在不同区域,一旦有相同行出现,那么前面的已经出现记录就被覆盖了...参考推荐: 删除文本重复(sort+uniq/awk/sed)

8.5K20

vi跳到文件第一和最后一

由于vi编辑器不能使用鼠标,所以一个大文件如果要到最后一只用键盘下键的话会是一个很痛苦过程,还好有各种比较快捷方法归我们使用: 1. vi 编辑器跳到文件第一:    a 输入 :0 或者...:1 回车    b 键盘按下 小写 gg 2.vi 编辑器跳到文件最后一:    a 输入 :$ 回车    b 键盘按下大写 G    c 键盘按 shift + g (其实和第二种方法一样...) Vim快速移动光标至行首和行尾 1、 需要按快速移动光标时,可以使用键盘上编辑键Home,快速将光标移动至当前行首。...2、 如果要快速移动光标至当前行行尾,可以使用编辑键End。也可以在命令模式中使用快捷键””(Shift+4)。与快捷键”^”和0不同,快捷键””前可以加上数字表示移动行数。...例如使用”1”表示当前行行尾,”2”表示当前行下一行尾。

9.4K40

uniq命令 – 去除文件重复

uniq命令全称是“unique”,中文释义是“独特,唯一”。该命令作用是用来去除文本文件连续重复,中间不能夹杂其他文本行。去除了重复,保留都是唯一,也就是独特,唯一了。...我们应当注意是,它和sort区别,sort只要有重复,它就去除,而uniq重复必须要连续,也可以用它忽略文件重复。...语法格式:uniq [参数] [文件] 常用参数: -c 打印每行在文本重复出现次数 -d 只显示有重复纪录,每个重复纪录只出现一次 -u 只显示没有重复纪录 参考实例 删除连续文件连续重复...Linux 85 Linux 85 [root@linuxcool ~]# uniq testfile test 30 Hello 95 Linux 85 打印每行在文件中出现重复次数...,且每个纪录只出现一次: [root@linuxcool ~]# uniq -d testfile test 30 Hello 95 Linux 85 只显示没有重复纪录: [root

2.9K00

MySQL锁(表锁、锁)

幻读(Phantom Reads):一个事务按相同查询条件重新读取以前检索过数据,却发现其他事务插入了满足其查询条件数据,这种现象就称为“幻读”。...InnoDB锁实现方式     InnoDB锁是通过索引上索引项来实现,这一点MySQL与Oracle不同,后者是通过在数据对相应数据加锁来实现。...在实际应用,要特别注意InnoDB这一特性,不然的话,可能导致大量锁冲突,从而影响并发性能。...什么时候使用表锁     对于InnoDB表,在绝大部分情况下都应该使用级锁,因为事务和锁往往是我们之所以选择InnoDB表理由。但在个另特殊事务,也可以考虑使用表级锁。...不同程序访问一组表时,应尽量约定以相同顺序访问各表,对一个表而言,尽可能以固定顺序存取表。这样可以大减少死锁机会。 尽量用相等条件访问数据,这样可以避免间隙锁对并发插入影响。

4.8K10

SQL转列和列转行

而在SQL面试,一道出镜频率很高题目就是转列和列转行问题,可以说这也是一道经典SQL题目,本文就这一问题做以介绍分享。 ? 给定如下模拟数据集,这也是SQL领域经典学生成绩表问题。...01 转列:sum+if 在行转列,经典解决方案是条件聚合,即sum+if组合。...其基本思路是这样: 在长表数据组织结构,同一uid对应了多行,即每门课程一条记录,对应一组分数,而在宽表需要将其变成同一uid下仅对应一 在长表,仅有一列记录了课程成绩,但在宽表则每门课作为一列记录成绩...其中,if(course='语文', score, NULL)语句实现了当且仅当课程为语文时取值为课程成绩,否则取值为空,这相当于衍生了一个列字段,且对于每个uid而言,其所有成绩就只有特定课程结果非空...02 列转行:union 列转行是上述过程逆过程,所以其思路也比较直观: 记录由一变为多行,列字段由多列变为单列; 一变多行需要复制,列字段由多列变单列相当于是堆积过程,其实也可以看做是复制;

7K30

MySQL锁(表锁、锁)

幻读(Phantom Reads):一个事务按相同查询条件重新读取以前检索过数据,却发现其他事务插入了满足其查询条件数据,这种现象就称为“幻读”。...InnoDB锁实现方式 InnoDB锁是通过索引上索引项来实现,这一点MySQL与Oracle不同,后者是通过在数据对相应数据加锁来实现。...在实际应用,要特别注意InnoDB这一特性,不然的话,可能导致大量锁冲突,从而影响并发性能。...什么时候使用表锁 对于InnoDB表,在绝大部分情况下都应该使用级锁,因为事务和锁往往是我们之所以选择InnoDB表理由。但在个另特殊事务,也可以考虑使用表级锁。...程序发现记录尚不存在,就试图插入一条记录,如果两个线程都这么做,就会出现死锁。这种情况下,将隔离级别改成READ COMMITTED,就可以避免问题。

5K20

SQL 转列和列转行

转列,列转行是我们在开发过程中经常碰到问题。转列一般通过CASE WHEN 语句来实现,也可以通过 SQL SERVER 运算符PIVOT来实现。用传统方法,比较好理解。...但是PIVOT 、UNPIVOT提供语法比一系列复杂SELECT…CASE 语句中所指定语法更简单、更具可读性。下面我们通过几个简单例子来介绍一下列转行、转列问题。...这也是一个典型转列例子。...上面两个列子基本上就是转列类型了。但是有个问题来了,上面是我为了说明弄一个简单列子。...实际,可能支付方式特别多,而且逻辑也复杂很多,可能涉及汇率、手续费等等(曾经做个这样一个),如果支付方式特别多,我们CASE WHEN 会弄出一大堆,确实比较恼火,而且新增一种支付方式,我们还得修改脚本如果把上面的脚本用动态

5.4K20

深入浅出InnoDB

图中id值为8记录加了gap锁,意味着 不允许别的事务在id值为8记录前边间隙插入记录 ,其实就是id列值(3, 8)这个区间记录是不允许立即插入。...比如,有另外一个事务再想插入一条id值为4 记录,它定位到该条记录下一条记录id值为8,而这条记录上又有一个gap锁,所以就会阻塞插入 操作,直到拥有这个gap锁事务提交了之后,id列值在区间...(3, 8)记录才可以被插入。...③ 临键锁(Next-Key Locks)   有时候我们既想 锁住某条记录 ,又想 阻止 其他事务在该记录前边 间隙插入记录 ,所以InnoDB就提 出了一种称之为 Next-Key Locks...但是InnoDB规定事务在等待时候也需要在内存中生成一个锁结构,表明有事务想在某个 间隙 插入 记录,但是 现在在等待。

35220

SQL 找出分组具有极值

这些需求有两个共同点:一是需要做分组,有按部门分组、有按科目、也有按用户分组;二是在分组里面找到存在极值,是整行数据,而不只是极值。...窗口函数 如果你在用 MySQL 5.8+,窗口函数可能是你最先想到办法,因为它足够简洁、简单。 先按部门分组,再对组内按照薪资降序排序,取排序序号为 1 即为部门最高薪资员工信息。...子查询 如果你数据库还不支持窗口函数,那可以先对 emp 分组,取出每个部门最高薪资,再和原表做一次关联就能获取到正确结果。...b.sal WHERE b.sal IS NULL ORDER BY a.deptno 我们知道,在SELECT * FROM a left join b on 关联条件 语句中 ,不论在 b 表是否有数据可以和...当 a.sal 是分组最大值时,a.sal < b.sal 条件不成立,关联出来结果 b 表数据为 NULL。

1.7K30

C++如何获取终端输出行数,C++清除终端输出特定内容

单纯使用C++ 进行编程时候,很多输出调试信息都是直接在终端输出,那么有的时候就会对终端输出信息有一定要求,那么如何进行定位终端输出信息到底输出到了哪一呢?...如何清除特定终端内容呢? 对于上面的两个问题,相信也会有很多小伙伴有同样烦恼,那么就让我们一起来解决这个麻烦吧。...;" << endl; cout << "终端输出第二内容;" << endl; cout << "终端输出第三内容;" << endl; getpos(&x, &y); //记录当前终端输出位置...setpos(0, 2); // 回到坐标(0,2)位置进行标准输入输出 (第三第一个字节位置) cout << " "; // 在原本存在内容情况下,清空原本行内容 setpos...(0, 2); // 回到坐标(0,2)位置进行标准输入输出 cin >> x; setpos(x, y); //回到记录位置 return 0; } 通过上面的代码demo就能够实现终端清空某一特定内容操作了

3.9K40

《第一代码》遇到问题

前言: 最近刚刚学完郭霖第一代码(第二版)这本书,是我选择入门安卓一本书,看到很多人都推荐这本书,所以就去图书馆借来趁寒假学习下。...但是由于技术是不断更新,而这本书是16年,虽然也算是市面上比较安卓书籍,但是由于技术更新速度实在是太快,所以楼主学习时候2020年,已经有点过时了,导致有一些方法和库更新之后有问题,在此记录下来...+是使用implement ‘库名’ 还有一个 第6章 数据存储全方案——详解持久化技术 时候会让你去adb查看android模拟器SQLlite表是否创建成功,我建议就是就别去看了,我弄了半天就是获取不了管理员权限...这里我们在MainActivity创建了两个通知渠道,首先要确保是当前手机系统版本必须是Android 8.0系统或者更高,因为低版本手机系统并没有通知渠道这个功能,不做系统版本检查的话会在低版本手机上造成崩溃...,我试了一下一切正常,可以注册,一天1000个访问量没问题,如果想要跟多可以在上面免费升级成为开发者。

1.7K10
领券