学习笔记Day13:Linux进阶

Linux进阶

Vim——Linux自带的文本编辑器

功能强大

在这里插入图片描述

命令模式
  • 使用 vim <file>进入后的默认模式
  • 可以上下左右移动光标
    • 方向键/hjkl
    • 快速到所在行的开头^/末尾$
    • 向下移动30行30j(上左右同)
    • 上下翻页Ctrl+f向上,Ctrl+b向下翻页
    • 快速回到文件第一行的第一个字符gg
    • 快速回到文件底部第一个字符G
  • 可以剪切字符/整行、也可以复制粘贴
    • 剪切x,连续剪切10个字符10x
    • 剪切所在行dd,剪切所在行及向下共10行10dd
    • 粘贴到所在行的下面p/上面P粘贴
    • 复制光标所在行yy,复制所在行及下面10行10yy
  • 撤销u
  • 重做上一个动作Ctrl+r
编辑模式

输入i后进入编辑模式

Esc退出编辑模式

末行模式

在命令模式下输入:

Esc退出该模式

  • 在该模式下可以设置、查询、替换、保存并退出
  • 保存退出
    • 保存并退出wq
    • 直接退出q
    • 不保存修改,强制退出q!
  • 查询
    • 输入/<KEYWORD>进行查询
    • n向下查找,按N向上查找
  • 替换
    • :%s///g全局替换
    • :s///g替换光标所在行
    • :s///只替换光标所在行的第一次出现
set系列命令
  1. :set nu显示行号;:set nonu取消显示行号
  2. :set list显示不可见字符(分辨制表符表格等)
  3. :set nowrap单行显示
  4. :set ff-unix将文件格式转换为unix格式
    • ff file format文件格式
  • 不同平台关于回车键的设置不同:Windows: \r \n; Mac: \r; Linux: \n. 解决方法之一:vim中的:set ff-unix。解决方法之二:dos2unix (unix2mac…)
异常情况处理
  1. E325:ATTENTION

    swp文件:使用vim编辑的时候未保存产生的缓存的文件

    第一种情况为其他程序正在修改。

    第二种情况为保存修改之前和服务器断开连接。

    可以-r(recovery)恢复,恢复保存后删除缓存文件[swp]。

  2. vim的帮助文档:vimtutor zh_CN

文本处理的三驾马车

grep

一种强大的文本搜索工具,可以匹配正则表达式

  • 格式:grep [options] ‘pattern’ file

  • 常见参数

    • -w 精准查找某个关键词word

    • -c统计匹配成功的行的数量

    • -v 反向选择,输出没有匹配的行

    • -n 显示匹配成功的行的所在行号

    • -r 从目录中查找pattern,显示所在行

      在目录中的所有文件中查找(不会查找压缩文件)

    • -e 指定多个匹配模式

      cat file | grep -w -e 'exon' -e 'UTR'  #-e和pattern成对出现
      
    • -f 从指定文件中读取要匹配的pattern

      使用vim把多个个关键词写入file2中,一行一个

    • -i 忽略大小写

  • 正则表达式

    • ^行首

    • $行尾

    • .换行符之外的任意单个字符

    • ? 匹配前一字符出现了0次/1次的情况(扩展正则表达式,需要使用\?或在参数位置使用-E开启优先正则表达式模式来匹配? )

    • + 匹配前一字符出现了1次/多次的情况(扩展正则)

    • * 匹配前一字符出现了0次/多次的情况

    • [] 匹配任意一个字符

      [AT]匹配A/T

    • [^] 排除字符

      [^aB]

    • |

sed

流编辑器,一般对文本进行增删改查

针对行进行的动作

  • 用法:sed [-options] ‘script’ file(s)

  • 常见参数[-options]

    • -n 禁止显示所有输入内容,只显示经过sed处理的行(常用)
    • -e 直接在命令模式上进行sed的动作编辑,接要执行的一个或多个命令
    • -f 执行含有sed动作的文件
    • -r sed的动作支持扩展正则
    • -i 直接修改读取的文件内容,会直接修改源文件
  • 动作script[address]command

    • address

      2:第2行

      2,4:第2-4行

      2,$:第2行到最后一行

      2~3:从第2行开始,每隔3行处理一次(2、5、8)

      2,+4:从第2行开始,到第2+4行

      /pattern/:匹配上pattern的行

      !:表示否定,取反,例如2!表示动作在除了第二行以外的行

    • command:增改删查

      a (append) 在指定行后增加一行,内容为a后面接的字符串

      i (insert) 在指定行的前增加一行,内容为i后面接的字符串

      d (delete) 删除某一行或某几行

      c (change) 改变指定行的内容

      s 更改或替换字符串,使用格式s/pattern/new/[flags],意为把pattern替换成new,flags表示替换第几个,1/2/g

      y 转换,实现字符一对一转换,格式y/abc/ABC 意为abc一对一替换成ABC,符号也支持

      p (print) 把匹配或修改过的行打印出来,通常与-n 参数合用

awk

也成为gawk,编程语言,可对文本和数据进行处理

  • 常见参数:

    -F (fields)设置字段分隔符

  • 用法:awk [options] ‘{script}’ file

    ##基础结构
    '{script}'
    ##匹配结构
    '/pattern/{script}'
    ##扩展结构
    'BEGIN{script} {script} END{script}'
    
  • awk使用预定义的字段分隔符划分每个数据字段,分配给一个变量。

    • $0 代表整个文本行

    • $1 代表文本行的第一个数据字段(列)

      。。。

    • $NF 代表文本行的最后一个数据字段(列)

  • 默认分隔符是任意空白字符(空格/制表符),也可以使用参数-F自定义分隔符

  • 内置变量:

    • FS 定义输入字段分隔符
    • RS 定义输入记录分隔符
    • OFS 定义输出字段分隔符
    • ORS 定义输出记录分隔符
    • NF 数据文件中的字段总数,简单理解为列数
    • NR 已处理的输入记录数,可以简单理解为行数
    cat Data/example.gtf | awk 'BEGIN{OFS= ":"} {print $3,$4,$5}' | head -5
    cat Data/example.gtf | awk 'BEGIN{FS="\t";OFS=";"} {print NR, $9}'|head -5
    
  • awk条件和循环语句

    • if条件判断

      awk '{if(条件) {yes} else {no}}'
      #例子
      awk'{if($3=="gene") print $0}'  ##类似R逻辑值去子集
      
  • awk数学运算

    在这里插入图片描述

  • cut的默认分隔符是分隔符,awk的列之间是根据写法不同改变。

Linux常见符号及其含义

在这里插入图片描述

引用自生信技能树课程~

今天内容比较多一些,还需要时间消化,还是先记下来以后慢慢理解~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/477376.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

docker 进入容器内部命令

docker容器运行了&#xff0c;怎么进入容器内部查看内部的文件情况呢&#xff1f; 答&#xff1a;可以通过docker exec 的命令查看。 docker exec --help 可以查看命令介绍 &#xff1a; docker exec -it XXX /bin/bash XX为容器ID 进入容器内部 /bin/bash是需要添加的 不…

MT管理器 使用手册

MT管理器 论坛&#xff1a;https://bbs.binmt.cc/ 使用技巧系列教程&#xff1a;https://www.52pojie.cn/thread-1259872-1-1.html MT管理器 使用手册 &#xff1a;https://mt2.cn/guide/&#xff1a;https://www.bookstack.cn/read/mt-manual/80b8084f6be128c0.md&#xff…

vue学习日记15:普通组件的注册使用

一、概念 &#xff08;1&#xff09;局部注册 &#xff08;2&#xff09;全局注册 二、实践 1.局部注册 &#xff08;1&#xff09;代码 步骤&#xff1a;创建组件 导入 注册 使用 src文件夹下面仅仅保留这两个即可 其他两个文件夹可以删除 在src下面建立components文件夹…

刷题DAY30 | LeetCode 332-重新安排行程 51-N皇后 37-解数独

332 重新安排行程&#xff08;hard&#xff09; 给你一份航线列表 tickets &#xff0c;其中 tickets[i] [fromi, toi] 表示飞机出发和降落的机场地点。请你对该行程进行重新规划排序。 所有这些机票都属于一个从 JFK&#xff08;肯尼迪国际机场&#xff09;出发的先生&…

Qt 不同数据类型转换

一.不同类型数据转换示例&#xff1a; #include <QGuiApplication> #include <QQmlApplicationEngine> #include <QJsonDocument> #include <QJsonObject> #include <QDebug>int main(int argc, char *argv[]) {QCoreApplication::setAttribute…

【C语言】linux内核pci_enable_device函数和_PCI_NOP宏

pci_enable_device 一、注释 static int pci_enable_device_flags(struct pci_dev *dev, unsigned long flags) {struct pci_dev *bridge;int err;int i, bars 0;/** 此时电源状态可能是未知的&#xff0c;可能是由于新启动或者设备移除调用。* 因此获取当前的电源状态&…

【Flask】Flask项目结构初识

1.前提准备 Python版本 # python 3.8.0 # 查看Python版本 python --version 安装第三方 Flask pip install flask # 如果安装失败&#xff0c;可以使用 -i&#xff0c;指定使用国内镜像源 # 清华镜像源&#xff1a;https://pypi.tuna.tsinghua.edu.cn/simple/ 检查 Flask 是…

网络: 网络层

IP地址: 分为网络号和主机号. 用来标识主机 IP协议 IP协议报文 4位版本号(version): 指定IP协议的版本, 对于IPv4来说, 就是4.4位头部长度(header length): IP头部的长度是多少个32bit, 也就是 length * 4 的字节数. 4bit表示最大的数字是15, 因此IP头部最大长度是60字节. 8…

传输介质介绍,数据链路层,MAC地址的构成和作用

简单网络 1.网卡 2.物理介质 3.协议栈 双绞线&#xff1a; UTP 非屏蔽双绞线 屏蔽式双绞线 水晶头 串口电缆&#xff1a;连接运营商 广域网一个用户接入到广域网&#xff0c;早期来讲&#xff0c;光纤 物理层&#xff1a;本质是通信&#xff0c;数据传输&#xff0c;介质产…

数据结构02:线性表 链表习题01[C++]

考研笔记整理~&#x1f95d;&#x1f95d; 之前的博文链接在此&#xff1a;数据结构02&#xff1a;线性表[顺序表链表]_线性链表-CSDN博客~&#x1f95d;&#x1f95d; 本篇作为链表的代码补充&#xff0c;供小伙伴们参考~&#x1f95d;&#x1f95d; 第1版&#xff1a;王道…

3.21小题总结

第一题&#xff1a;生日蛋糕 题解&#xff1a;这题是蛋糕结构是一层一层的&#xff0c;估计很多人很快就能想到是dfs&#xff0c;但是这题的难想的点在于 你每层的状态该怎么去确定&#xff0c;你怎么来确定每层的半径和高度是多少&#xff0c;一开始我也不知很理解&#xff0…

计算结构体的大小(结构体的内存对齐)

一&#xff1a;问题 问题所在&#xff1a;两个结构体应该都是6个字节大小&#xff0c;为什么一个12&#xff0c;一个6&#xff1f;&#xff1f;&#xff1f; 二&#xff1a;如何正确的计算结构体大小&#xff1f; 首先得掌握结构体的对齐规则&#xff1a; 第一&#xff1a; 第一…

Leetcode 994. 腐烂的橘子

心路历程&#xff1a; 一开始以为和刚做过的岛屿问题很像&#xff0c;只不过是把岛屿问题换成BFS去做&#xff0c;然后再加上一些计数的规则。结果做完后发现只能通过一半左右的测试用例&#xff0c;发现有一个逻辑错误在于&#xff0c;当腐烂的橘子位于两端时&#xff0c;可以…

约数(因数)问题(ACwing算法笔记)

869.试除法求约数 注意点&#xff1a; 1.试除法就是让i遍历的最大值到a/i。 2.约数成对存在&#xff0c;只遍历前一部分即可。 代码&#xff1a; #include<iostream> #include<queue> #include<algorithm> #include<cstring> #include<cmath>…

Go语言学习04~05 函数和面向对象编程

Go语言学习04-函数 函数是一等公民 <font color"Blue">与其他主要编程语言的差异</font> 可以有多个返回值所有参数都是值传递: slice, map, channel 会有传引用的错觉函数可以作为变量的值函数可以作为参数和返回值 学习函数式编程 可变参数 func s…

刷题28-30(力扣0322/0078/0221)

0322. 零钱兑换 题目&#xff1a; 给你一个整数数组 coins &#xff0c;表示不同面额的硬币&#xff1b;以及一个整数 amount &#xff0c;表示总金额。计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额&#xff0c;返回 -1 。你可以…

LLM - 大语言模型的分布式训练 概述

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://blog.csdn.net/caroline_wendy/article/details/136924304 大语言模型的分布式训练是一个复杂的过程&#xff0c;涉及到将大规模的计算任务分散到多个计算节点上。这样做的目的是为了处…

java面试:常见的限流算法有哪些

1 什么是限流算法 限流算法是一种用于限制流量请求的频率或速率的算法&#xff0c;其目的是在高并发或大流量请求的情况下&#xff0c;保护系统服务的安全性和可用性。限流算法可以应对热点业务带来的突发请求、调用方bug导致的突发请求以及恶意攻击请求等情况。是一种系统保护…

10W字解析 SpringBoot技术内幕文档,实战+原理齐飞,spring事务实现原理面试

第3章&#xff0c;Spring Boot构造流程源码分析&#xff0c;Spring Boot的启动非常简单&#xff0c;只需执行一个简单的main方法即可&#xff0c;但在整个main方法中&#xff0c;Spring Boot都做了些什么呢&#xff1f;本章会为大家详细讲解Spring Boot启动过程中所涉及的源代码…

《深入解析 C#》—— C# 3 部分

文章目录 第三章 C#3&#xff1a;LINQ及相关特性3.1 自动实现属性&#xff08;*&#xff09;3.2 隐式类型 var&#xff08;*&#xff09;3.3 对象和集合初始化3.3.1 对象初始化器3.3.2 集合初始化器 3.4 匿名类型3.4.1 基本语法和行为3.4.2 编译器生成类型3.4.3 匿名类型的局限…