精华内容
下载资源
问答
  • 1、awk只处理第一匹配匹配后使用exit命令退出处理: awk '/version/{print $1;exit;}' input.txt 处理3个匹配行后结束处理: awk '/aa/{i++;if(i 2、只处理指定的。NR表示输入文件的行号 awk 'NR...

    AWK技巧:

    1、awk只处理第一个匹配的行,匹配后使用exit命令退出处理:

    awk '/version/{print $1;exit;}' input.txt

    处理3个匹配行后结束处理:

    awk '/aa/{i++;if(i<3){print $0}else{exit;}}' a

    2、只处理指定的行。NR表示输入文件的行号

    awk 'NR==1,NR==5{print $0}' file


    参考:

    1、awk如何只处理第N行就退出, chinaunix.net, http://bbs.chinaunix.net/thread-1679570-1-1.html

    展开全文
  • Unix grep 返回第一次匹配

    千次阅读 2018-10-05 17:28:30
    grep -m    -m num, --max-count=num  Stop reading the file after num matches.

    grep -m

     

     -m num, --max-count=num

                 Stop reading the file after num matches.

    展开全文
  • Linux sed命令在匹配行前后插入新

    千次阅读 2018-07-17 16:01:37
    有时候经常需要在匹配行的前后...a\ 在匹配行的后面追加一行 b\ 在匹配行的前面追加一行 sed的man手册说明如下, a \ text Append text, which has each embedded newline preceded by a backslash. i \ tex...

    有时候经常需要在匹配行的前后插入新行,之前各种找资料,现在记录一下。

    参数说明

    使用sed命令配合以下参数即可实现,

    a\ 在匹配行的后面追加一行 
    b\ 在匹配行的前面追加一行
    

    sed的man手册说明如下,

    a \
    text   Append text, which has each embedded newline preceded by a backslash.
    i \
    text   Insert text, which has each embedded newline preceded by a backslash.
    

    具体使用

    假定有以下脚本,

    #!/bin/bash
    
    cat a >> b
    
    

    需要在cat之前先判断该文件是否存在,因此需要添加一个if判断,可如下操作,

    [root@CentOS-7-2 /home]# cat test.sh 
    #!/bin/bash
    
    cat a >> b
    [root@CentOS-7-2 /home]# sed -i "/cat/i\if [ -f a ];then" test.sh 
    [root@CentOS-7-2 /home]# sed -i "/cat/a\fi" test.sh 
    [root@CentOS-7-2 /home]# cat test.sh 
    #!/bin/bash
    
    if [ -f a ];then
    cat a >> b
    fi
    [root@CentOS-7-2 /home]# 
    

    以cat为关键字匹配行,然后在该行之前添加if判断,在该行之后添加fi,结束if语句。

    不过此时好像格式不太好看,那就再补一刀,在匹配字符前插入字符。

    [root@CentOS-7-2 /home]# cat test.sh 
    #!/bin/bash
    
    if [ -f a ];then
    cat a >> b
    fi
    [root@CentOS-7-2 /home]# sed -i "s/cat/    &/" test.sh 
    [root@CentOS-7-2 /home]# cat test.sh 
    #!/bin/bash
    
    if [ -f a ];then
        cat a >> b
    fi
    [root@CentOS-7-2 /home]# 
    

    相应的,在匹配字符后插入字符可如下操作,

    [root@CentOS-7-2 /home]# cat test.sh 
    #!/bin/bash
    
    if [ -f a ];then
        cat a >> b
    fi
    [root@CentOS-7-2 /home]# sed -i "s/>> b/&;echo ok/" test.sh 
    [root@CentOS-7-2 /home]# cat test.sh 
    #!/bin/bash
    
    if [ -f a ];then
        cat a >> b;echo ok
    fi
    [root@CentOS-7-2 /home]# 
    

    如果想在匹配行的行首或者行尾插入字符,只要将关键字替换为行首行尾的标识符:^和$

    展开全文
  • 操作系统第一次实验报告 Linux的基本使用和管理 一、实验内容简要描述 1、实验目标 完成Linux的安装和配置 了解Linux基本环境与使用 熟悉Linux文件处理 学习vi编辑器的使用 2、实验要求 熟悉linux操作系统的基本...

    操作系统第一次实验报告

    Linux的基本使用和管理

    一、实验内容简要描述

    1、实验目标

    1. 完成Linux的安装和配置
    2. 了解Linux基本环境与使用
    3. 熟悉Linux文件处理
    4. 学习vi编辑器的使用

    2、实验要求

    1. 熟悉linux操作系统的基本安装和配置;了解linux操作系统的启动过程和桌面环境;掌握VirtualBox虚拟机的使用
    2. 了解Linux的命令格式,掌握Linux中的操作命令;学会使用各种Shell命令操作Linux;学会如何得到帮助信息
    3. 熟悉Linux文件系统的文件和目录结构,掌握Linux文件系统的基本特征;掌握命令行方式下文件操作命令和程序中文件操作函数的使用方法;掌握Linux文件系统的加载和卸载方法
    4. 了解用vi编辑器编辑文本文件的基本使用方法;熟练运用vi编辑器进行快速文档编辑

    二、实验过程设计

    1、设计思路

    • Linux的安装和配置
      1. 下载VirtualBox和两个不同的发行版镜像文件
      2. 在VirtualBox中利用第一个镜像文件完成第一个Linux的安装
      3. 在VirtualBox中利用第二个镜像文件完成第一个Linux的安装
      4. 分别完成两个linux网络信息、用户信息、文件系统及硬盘分区的配置
      5. 通过GRUB解决两个操作系统选择启动问题
    • Linux基本环境与使用
      1. 使用man命令获得lsunamedatecalmkdircp等Linux命令的帮助手册,了解这些命令的具体使用方法
      2. 通过uname命令的执行,查看并给出系统的相关信息
      3. date命令显示当前时间,用cal命令显示2008、2013年的日历,给出执行命令和显示结果
      4. 在主目录下创建一个名为myetc的子目录,将/etc目录下与网络相关的文件和子目录拷贝到该目录下,并将文件的执行权限设置为可执行
    • Linux文件处理
      1. 在用户主目录下创建目录树,列出完成该过程的所有命令
      2. /usr/bin目录下有多少个普通文件、目录文件和链接文件?如何得到这些信息
      3. 显示用户主目录下所有影藏文件的文件名,列出执行的命令及输出结果
      4. 实现对光盘、移动硬盘的加载和访问,然后卸载设备
      5. 让系统开机时自动加载Windows文件系统,实现对Windows数据的访问和共享
    • vi编辑器的使用
      1. 在当前用户目录下建立vitest子目录,将/etc/inittab文件拷贝到vitest子目录
      2. 用vi编辑器打开该文件,执行下述操作,并详细说明操作过程及方法
        • 删除第5,15和25行指令
        • 将文中所有的etc字符串替换成config
        • 复制第11-20行的内容,并且贴到文件最后一行之后
        • 将每行开头的第一个字符#删除
        • 删除包含有字符串conf的那几行
        • 在第一行新增一行,输入姓名学号
        • 将文件另存为new-inittab.conf

    2、实验过程

    • Linux的安装和配置

      1. 在VirtualBox中安装Ubuntu

        1.png

        屏幕快照 2018-09-14 下午4.14.29.png

      2. Installation Type选择something else

        屏幕快照 2018-09-14 下午4.17.18.png

      3. 将挂载点设置为/dev/sda,文件类型设置为ext4
        屏幕快照 2018-09-14 下午4.17.36.png

      4. 安装完成后关闭该虚拟机,在VirtualBox对刚刚安装好的虚拟机进行设置,在储存中对添加新的虚拟光驱,将另一个Ubuntu镜像文件添加进去

        屏幕快照 2018-10-08 上午9.20.33.png

      5. 系统->主板中将光驱的启动顺序提到硬盘

        屏幕快照 2018-10-08 上午9.20.53.png

      6. 安装第二个Ubuntu镜像,对之前分配的硬盘空间进行分区,挂载点设置为swap area,安装完成后再次启动即会出现选择系统界面

        屏幕快照 2018-10-08 下午2.06.42.png

      7. 由于我使用的Ubuntu版本为16.04.2,其自带GRUB,无需手动进行配置

    • Linux基本环境与使用

      1. man ls

        屏幕快照 2018-10-07 下午8.41.29.png

      2. man uname

        屏幕快照 2018-10-07 下午8.42.12.png

      3. man date

        屏幕快照 2018-10-07 下午8.42.31.png

      4. man cal

        屏幕快照 2018-10-08 上午10.12.55.png

      5. man mkdir

        屏幕快照 2018-10-07 下午8.44.59.png

      6. man cp

        屏幕快照 2018-10-07 下午8.45.28.png

      7. uname查看并给出系统的相关信息

        屏幕快照 2018-10-07 下午8.45.54.png

      8. date显示当前时间

        屏幕快照 2018-10-07 下午8.46.17.png

      9. cal 2008cal 2013显示2008、2013年的日历

        屏幕快照 2018-10-08 上午10.04.43.png
        屏幕快照 2018-10-08 上午10.05.11.png

      10. 在主目录下创建一个名为myetc的子目录,将/etc目录下与网络相关的文件和子目录拷贝到该目录下

        屏幕快照 2018-10-08 上午10.03.30.png

    1. 将文件的执行权限设置为可执行

      `chmod a+x network` chmod命令修改文件权限
      ![屏幕快照 2018-10-07 下午9.04.40.png](https://i.loli.net/2018/10/08/5bbb1c8204eb8.png)
      
      `ls -l` 显示文件详细信息,开头的第一个字符串标识文件权限。这个字符串有10位,可以分为4段来解读。注:`r--`可读,`w--`可写,`x--`可执行。
      
      第一段(第1位)表示是目录还是文件,-表示是文件,d表示是目录;第二段(第2-4位,共3个字符串)表示文件所属用户对它的权限;第三段(第5-7位,共3个字符串)表示文件所属用户组用户对它的权限;第四段(第8-10位,共3个字符串)表示其他用户对它的权限
      
    • Linux文件处理

      1. 创建目录树

        ls列出当前目录下所有文件,mkdir新建文件夹

        屏幕快照 2018-10-07 下午9.07.51.png

      2. 使用ls -l查看当前目录下所有文件及其详细信息,第一列的第一个字符即为文件类型,-是普通文件,d是目录文件,l是链接文件;管道命令操作符是:|,它只能处理经由前面一个指令传出的正确输出信息,对错误信息信息没有直接处理能力。然后,传递给下一个命令,作为标准的输入;我们将ls -l的输出通过管道转发给grep作为输入内容,再使用grep命令结合正则表达式匹配指定字符开头的字符串

        屏幕快照 2018-10-07 下午9.28.55.png

      3. ls -d .*显示所有隐藏文件

        屏幕快照 2018-10-07 下午9.34.14.png

      4. 加载硬盘

        由于普通用户无法挂载硬盘,所以我们需要先获得root权限

        屏幕快照 2018-10-08 下午2.51.58.png

        安装Oracle VM VirtualBox Extension Pack,下载后双击即可启动VirtualBox进行自动安装。这个扩展包可以为VirtualBox增加一系列的功能支持:USB2.0设备、因特尔网卡的PXE启动和VirtualBox远程显示系统等。安装之前需要关闭所有VirtualBox中的虚拟机。

        端口->USB设备将USB控制器设置为USB3.0

        屏幕快照 2018-10-08 下午2.41.06.png

        将要挂载的U盘添加至USB设备筛选器

        屏幕快照 2018-10-08 下午2.41.30.png

        在虚拟机中加载USB模块

        屏幕快照 2018-10-08 下午2.46.16.png

        fdisk -l查看磁盘设备

        屏幕快照 2018-10-08 下午2.46.23.png

        我们发现U盘并没有成功挂载

        屏幕快照 2018-10-08 下午2.49.08.png

        尝试在设备->USB中加载该U盘,出现报错,原因是主机正在占用该设备,所以虚拟机中无法使用

        屏幕快照 2018-10-08 下午2.44.52.png

        我们在主机上将U盘推出

        屏幕快照 2018-10-08 下午2.45.13.png

        重新加载USB模块,查看磁盘设备,此时U盘已经成功挂载

        屏幕快照 2018-10-08 下午2.45.57.png

      5. 加载Windows文件系统

        由于我电脑的操作系统为MacOS,实现在虚拟机中加载Windows文件系统存在一些困难,但上一题中加载U盘的文件格式为NTFS,级Windows文件格式,可视为对Windows文件系统的加载

    • vi编辑器的使用

      1. 建立vitest子目录

        屏幕快照 2018-10-08 下午3.14.59.png

      2. /etc/inittab文件拷贝到vitest子目录

        由于我的Linux中并没有/etc/inittab这个文件,所以使用/ect/init.d/kerneloops替代

        屏幕快照 2018-10-08 下午3.14.36.png

      3. vi编辑器打开文件

        屏幕快照 2018-10-08 下午3.29.32.png

        屏幕快照 2018-10-08 下午3.29.51.png

      4. 删除第5,15和25行

        :nd n为要删除的行数

        由于删除后行数会改变,所以从行数大的向行数小的进行删除

        屏幕快照 2018-10-08 下午3.31.11.png

        屏幕快照 2018-10-08 下午3.31.41.png

        屏幕快照 2018-10-08 下午3.31.54.png

      5. 将文中所有的etc字符串替换成config

      :%s/etc/conf/g s命令,需要注意的是,要在最前面加上%表示全文,如果不加只会替换第一次出现目标字符串的行里面的,命令的最后要加一个替换标志/g,替换每一个出现的字符串,如果不加/g的话,如果某一行有两个目标字符串,在替换了第一个之后就会去下一行,而第二个就不替换了

      屏幕快照 2018-10-08 下午3.50.00.png

      1. 复制第11-20行的内容,并且贴到文件最后一行之后

        :11,20y a,by指令复制,表示复制a到b行的内容,之后把光标移动到最后,按p粘贴,最开始它只会出现第一行,这时需要按回车继续下一行的粘贴。可以看出11-20行和最后10行一样

        屏幕快照 2018-10-08 下午3.52.13.png

      屏幕快照 2018-10-08 下午3.52.24.png

      1. 将每行开头的第一个字符#删除

        :%s/^#//g 删除可以用替换成空白完成,s为替换命令,^/是被替换项的正则表达式,表示以#开头,替换成空白,命令的最后要加一个替换标志/g,替换每一个出现的字符串,如果不加/g的话,如果某一行有两个目标字符串,在替换了第一个之后就会去下一行,而第二个就不替换了

        屏幕快照 2018-10-08 下午3.57.27.png

        屏幕快照 2018-10-08 下午3.57.05.png

      2. 删除包含有字符串conf的那几行

        :g/conf/d 先用/查询,查询时要加上g表示全局查询,然后用的删除查询到的行,组合起来就可以了

        屏幕快照 2018-10-08 下午4.00.18.png

        屏幕快照 2018-10-08 下午3.59.48.png

      3. 在第一行新增一行,输入姓名学号

        首先将光标移到最前,键入O进入编辑模式,之后输入姓名学号,输入完成后按esc回到命令模式

        屏幕快照 2018-10-08 下午4.03.25.png

      4. 将文件另存为new-inittab.conf

        :w new-inittab.conf

        屏幕快照 2018-10-08 下午4.05.14.png

        屏幕快照 2018-10-08 下午4.05.36.png

    三、实验结果

    1、基本数据

    • 完成该实验投入的时间:12h+
    • 完成的工作量(如命令数、阅读或实验代码行数等):200+

    2、实验软硬件环境

    • 系统:Ubuntu 16.04
    • 内存:2G

    3、值得说明的实验发现(结果)

    由于实验指导的年代比较久远,有很多地方已经跟书上所说有了变化,比如现在的Ubuntu自带GRUB,不需要我们手动配置,虚拟机在挂载硬盘时也无需通过mount指定挂载点了。

    俗话说尽信书不如无书,我们在参考实验指导的同时,更重要的是学会自己解决问题的能力,我们在实验过程中遇到的问题,往往已经有很多人碰到过了,我们可以利用网络在检索资料,有很多的博客以及社区都有很多的技术贴对于问题的记录十分详尽,值得我们去学习。

    此外,Ubuntu的官方文档也十分具有参考价值

    4、实验结果分析

    完成了Linux的安装和配置,对Linux基本环境有了一定了解,学会了Linux文件处理的方法,同时可以较为熟练的使用vi编辑器了

    展开全文
  • Linux sed 替换第一次出现的字符串

    千次阅读 2016-12-16 20:33:00
    /********************************************************************************* ... * Linux sed 替换第一次出现的字符串 * 说明: * 需要替换配置文件中第一次出现的文本内容。 * * ...
  • 种说法,现代计算机不是靠电力驱动,而是靠“鼠标”。多少应用程序的界面需要移动和点击鼠标来执行的。计算机本来的用意是把人类从反复单调的工作中解放出来,但适得其反,摆在我们身边的残酷现实是我们每个人...
  • sed 替换每最后匹配的字符

    千次阅读 2019-09-12 16:32:59
    sed 's/\(.*\)src_str\(.*\)/\1dst_str\2/' yourfile 说明: src_str:要匹配的字符 ...该行命令的作用是替换文件中每一行匹配到的最后一个字符 详细原理还没弄明白,哈哈 参考:https://...
  • linux第一阶段学习笔记基础

    千次阅读 多人点赞 2019-06-12 19:57:06
    linux学习 day01 1.计算机基础 运维人员的职责: 7*24是服务器稳定运行 数据不能丢失损坏 提升用户体验 常见的服务器种类 DELL DELL 1U 2U 2010 1850/1950 2850/2950 2010-2013 R410/R610 R710 2014-...
  • 第一阶段:Linux基础

    千次阅读 2020-02-18 22:31:32
    1.1Linux基础 1.1.1课程简介 ...# 每天进步0.01,坚持365天后你就会有个质的飞跃 1.01 ** 365 # **表示指数运算,运算的结果为37.8 # 三天打鱼两天晒网的最终结果就是一事无成 1.01 ** 3 * 0.99 *...
  • Linux系统&amp;C语言高级 (3+5)天 Linux系统  操作系统的发展简史(命令行交互--&gt;鼠标交互--&gt;触摸屏交互--&gt;语音交互)  内核   :7个组件  shell  shell命令  通配符  ...
  • # 删除每行第一个字符 sed 's/.//' tmp.txt 23456789 23456789 23456789 # 删除每行前两个字符,并保存到tmp2.txt sed 's/..//' tmp.txt &amp;gt; tmp2.txt 3456789 3456789 3456789 # 删除每...
  • 1、Linux用shell一次性杀指定进程的方法 2、Linux命令杀掉符合条件的所有进程 Linux用shell一次性杀指定进程的方法 需要把 linux 下符合某一项条件的所有进程 kill 掉,这个时候我们需要运用 ps, grep, cut...
  • linux系统中,利用grep打印匹配的上下几行 grep -5 'parttern' inputfile //打印匹配行的前后5 grep -C 5 'parttern' inputfile //打印匹配行的前后5 grep -A 5 'parttern' inputfile //打印匹配行的后5 ...
  • linux eBPF是3.17内核开始引入的个全新设计,代码目录主要在kernel/bpf 下,它的全称是 extended BPF(eBPF), 目前关于eBPF的资料还比较乱,很难得看到篇对ebpf总结的那么全的文章,转载自此:
  • Linux命令行大全》2版是本什么样的书 这是本全面讲述Linux命令行用法的图书。本书从更广泛的意义上向你传授如何使用CLI、CLI工作原理、CLI都有哪些功能,以及最佳实践是什么。 这不是本有关Linux操作...
  • Linux

    万次阅读 2021-02-20 00:44:36
    1章 Linux开山篇 2章 Linux基础篇-Linux入门 3章 Linux 基础篇- VM 和 Linux 的安装 3.1 安装 vm 和 Centos [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wF0XUVFU-1613753113874...
  • 说明: 这个只是供自己以后查询使用,如有问题请指出。 仅供参考 查看匹配内容的前后几行: ... #grep -5 'reg' destFile //打印匹配行的前后5 #grep -C 5 'reg' destFile //打印匹配行的前后5 #grep ...
  • LinuxLinux常用命令

    万次阅读 2018-05-29 09:55:03
    Linux个可靠的、高性能的系统,而所有的这些优越性只有在直接使用Linux命令行时才能充分地体现出来。Linux系统安装成功后,就可以进入到与Windows类似的图形化界面了。这个界面就是Linux图形化界面X窗口系统的...
  • 第一章——Linux常用命令 1. 目录和文件管理 1.1目录相关 1.1.1 mkdir 功能说明:建立目录 语 法:mkdir [-p] 参 数:-p 若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录。 Example :...
  • 式攻克linux

    千次阅读 2010-05-17 01:41:00
    http://sery.blog.ccidnet.com/blog/ccid/uid_3587/dirid_1.html---佩服田逸一招一式攻克linux之一第一招 安装linux 关于windows与linux谁优谁劣的问题一直争论不休,也许,你在windows的世界中得心应手,但是,你也...
  • Linux Sed命令详解(文本处理工具 - 匹配,替换,添加等),优化投产步骤,使用命令批量修改抽数脚本代替逐个vim
  • Linux入门教程(

    千次阅读 多人点赞 2021-02-08 15:16:01
    本篇博客详细介绍了Linux的基础知识,从CentOS 7.6 的手把手安装,到用户组和权限的管理,每一步都有非常详细的截图和理论解释。适合新手快速入门Linux,也适合老手用来复习巩固。整理不易,望您支持
  • 2.描述linux下软链接和硬链接的区别。(记时2分钟) 3.linux shell中单引号、双引号及不加引号的区别(记时2分钟) 4.linux运行级别0-6(记时1分钟) 5.描述linux下文件删除的原理(记时3分钟) 6.描述硬盘的...
  • linux命令(查找文件/字符串匹配

    万次阅读 2012-06-28 15:34:15
    查找文件  find -name '*record*' =====================...Find是个非常有效的工具,它可以遍历当前目录甚至于整个文件系统来查找某些文件或目录. 主要选项:  -name 按照文件名查找文件  -perm 按照文件权
  • Linux实用教程(三版)

    万次阅读 多人点赞 2019-08-27 22:55:59
    第一Linux系统初步了解 本章内容 1.1 Linux系统简介 1.2 Linux系统的特点和组成 1.3 Linux版本介绍 1.4 Red Hat Linux系统概述 1.1 Linux系统简介 1.1.1 什么是Linux 1.1.2 Linux系统的产生 1.1.3 Linux...
  • 本人使用linux,而天嵌科技的开发板的开发工具全都是基于windows的,本人又不想重回windows, 所以板子买来之后一直搁置了好几个月,基于各种原因,今天特意花了一点时间来研究linux下如何连接 开发板。 条件:...
  • Linux个简单的日志系统的设计及其C代码实现

    万次阅读 多人点赞 2015-05-22 15:17:45
    1.概述 在大型软件系统中,为了监测软件运行状况及排查软件故障,一般都会要求软件程序在运行的过程中产生...因此,熟练掌握日志系统的编写方法并快速地阅读日志文件,是对个软件开发工程师的基本要求。 本文详细地
  • Linux Sed命令详解+如何替换换符"\n"(很多面试问道)

    万次阅读 多人点赞 2014-10-15 21:12:15
    Sed Sed是一个强大的文本处理工具 可以采用正则匹配,对文本进行插入删除修改等操作 . . . 三 、一个比较有趣的例子 如何替换\n也就是把所有的行都归为一行 第一种方式
  • 五章-Linux实操篇

    千次阅读 2019-10-24 18:45:20
    title: 五章 Linux实操篇 categories: Linux tags: linux typora-root-url: … abbrlink: 93414991 date: 2019-08-15 15:27:58 五章 Linux实操篇 远程登录Linux系统 5.1 为什么要远程登录服务器 5.2 xhell5...
  • 二十章:gawk进阶 使用变量gawk支持两种类型的变量:内建变量自定义变量内建变量字段和数据分割符变量使用美元符号($)和数据字段在数据中位置对应的数值来引用该数据中的字段。比如,要引用数据中的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 124,486
精华内容 49,794
关键字:

linux匹配一行第一次

linux 订阅