sed

linux文本处理三剑客之sed

血红的双手。 提交于 2020-03-15 08:33:33
上一节我们已经学习过了grep,今天来学习sed。它是按照script的指令,来处理,编辑一个或多个文本文件,简化对文件的反复操作,编写转换程序等。 sed用法 sed 选项 动作 输入文件 参数说明 : -n 不输出到屏幕,不打印(默认打印) -e 多点编辑输入的文本文件 -f 以选项中指定的script文件来处理输入的文本文件 -r 扩展正则表达式 -h 显示帮助 -v 显示版本信息 -i sed 的『 -i 』选项可以直接修改文件内容,这功能非常有帮助!举例来说,如果你有一个 100 万行的文件,你要在第 100 行加某些文字,此时使用 vim 可能会疯掉!因为文件太大了!那怎办?就利用 sed 啊!透过 sed 直接修改/取代的功能,你甚至不需要使用 vim 去修订! 实例: -n : [root@localhost ~]# seq 1 10 |sed -n '8p' 8 [root@localhost ~]# seq 1 10 |sed -n "$[$(seq 1 10|wc -l)-1]p" 9 #输出倒数第二行 -e : [root@localhost ~]# sed -e 2a\desk e how are you? apple banana apple desk wine tea juice desk chair -r : [root@localhost app]

shell学习(sed)

可紊 提交于 2020-03-15 08:19:04
sed 可以分析 Standard Input (STDIN) 的数据, 然后将数据经过处理后,再将他输出到 standrad out (STDOUT) 的一个工具。它可以进行取代、删除、新增、撷取特定行等等的功能。 sed [-nefr] [动作] 参数: -n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的数据一般都会被列出到屏幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。 -e :直接在指令列模式上进行 sed 的动作编辑; -f :直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作; -r :sed 的动作支持的是延伸型正规表示法的语法。(预设是基础正规表示法语法) 动作说明: [n1[,n2]]function n1, n2 :不见得会存在,一般代表『选择进行动作的行数』,举例来说,如果我的动作是需要在 10 到 20 行之间进行的,则『 10,20[动作行为] 』 function 有底下这些咚咚: a :新增, a 的后面可以接字符串,而这些字符串会在新的一行出现(目前的下一行)~ c :取代, c 的后面可以接字符串,这些字符串可以取代 n1,n2 之间的行! d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚; i

linux之sed的用法

蓝咒 提交于 2020-03-15 08:18:44
sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作,下面先了解一下sed的用法 sed命令行格式为: sed [-nefri] 'command' filename 常用选项: -n:使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上。 但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。 -e:直接在指令列模式上进行 sed 的动作编辑; -f: 直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作; -r: sed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法) -i: 直接修改读取的档案内容 ,而不是由屏幕输出。 常用命令: a:新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~ c:取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行! d:删除,因为是删除啊,所以 d 后面通常不接任何咚咚; i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行); p:列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作~ s:取代,可以直接进行取代的工作哩

Linux命令 - sed

て烟熏妆下的殇ゞ 提交于 2020-03-15 08:17:26
sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作,下面先了解一下sed的用法 sed命令行格式为: sed [-nefri] ‘command’ 输入文本 常用选项: -n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。 -e∶直接在指令列模式上进行 sed 的动作编辑; -f∶直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作; -r∶sed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法) -i∶直接修改读取的档案内容,而不是由萤幕输出。 常用命令: a ∶新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~ c ∶取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行! d ∶删除,因为是删除啊,所以 d 后面通常不接任何咚咚; i ∶插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行); p ∶列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作~ s ∶取代,可以直接进行取代的工作哩!通常这个 s

Linux Shell之sed命令

自闭症网瘾萝莉.ら 提交于 2020-03-15 08:16:03
sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作,下面先了解一下sed的用法 sed命令行格式为: sed [-nefri] ‘command’ 输入文本 常用选项: -n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。 -e∶直接在指令列模式上进行 sed 的动作编辑; -f∶直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作; -r∶sed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法) -i∶直接修改读取的档案内容,而不是由萤幕输出。 常用命令: a ∶新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~ c ∶取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行! d ∶删除,因为是删除啊,所以 d 后面通常不接任何咚咚; i ∶插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行); p ∶列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作~ s ∶取代,可以直接进行取代的工作哩!通常这个 s

开发人员行走Unix的随身四艺

自闭症网瘾萝莉.ら 提交于 2020-03-15 07:56:05
Unix系统永远只会越来越多,开发人员就没必要特意学习它们的安装、配置和管理了,就全部交给集成人员吧。 但开发人员行走于Unix之间,依然有四样东西要熟练。 一、VI 虽然Unix上的文本编辑器已经越来越好用,但不在Console前面,网速也不够连XWindows的时候,还是要依赖VI。 回想VI的时代背景,发现VI对开发人员已经周到得离谱了,热键多到你双手不离键盘就能完成大半编辑工作。 建议自己制作一张自己认为有用,但又经常忘记的命令的sheet,拿出考试的力气把它背熟。 二、文本处理 开发人员在Unix下干得最多的除了Make和除Bug外,大概就是处理日志文件、业务文件进行查错和统计了。 只会more和grep是不够的,开发老手会把awk,sed,grep,sort,unique,wc这些文本处理命令,通过管道玩具式的拆卸拼装,最后完成一件原本以为非编写大段代码不可的工作。周到的参数设定,让人再一次感叹那个简单的年代,复杂到极致的设计.......怪不得《Unix 编程艺术》的作者有那么骄傲的自觉。 比如车东的每月访问TOP10 统计脚本: awk -F ' t' '{ print $ 4 }' 2004_2 . txt| grep chedong . com / tech / | sort |uniq -c| sort -rn|head - 10 awk -F '/t'

sed 命令详解

橙三吉。 提交于 2020-03-14 11:31:03
原文链接 1. Sed简介 2. 定址 3. Sed命令 4. 选项 5. 元字符集 6. 实例 (一) 7. 实例(二) 8 . 脚本 1.简介 sed是非交互式的编辑器。它不会修改文件,除非使用shell重定向来保存结果。默认情况下,所有的输出行都被打印到屏幕上。 sed编辑器逐行处理文件(或输入),并将结果发送到屏幕。具体过程如下:首先sed把当前正在处理的行保存在一个临时缓存区中(也称为模式空间),然后处理临时缓冲区中的行,完成后把该行发送到屏幕上。sed每处理完一行就将其从临时缓冲区删除,然后将下一行读入,进行处理和显示。处理完输入文件的最后一行后,sed便结束运行。sed把每一行都存在临时缓冲区中,对这个副本进行编辑,所以不会修改原文件。 2. 定址 定址用于决定对哪些行进行编辑。地址的形式可以是数字、正则表达式、或二者的结合。如果没有指定地址,sed将处理输入文件的所有行。 地址是一个数字,则表示行号;是“$"符号,则表示最后一行。例如: sed - n '3p' datafile 只打印第三行 只显示指定行范围的文件内容,例如: # 只查看文件的第100行到第200行 sed -n '100,200p' mysql_slow_query.log 地址是逗号分隔的,那么需要处理的地址是这两行之间的范围(包括这两行在内)。范围可以用数字、正则表达式、或二者的组合表示

shell入门-sed-1

会有一股神秘感。 提交于 2020-03-14 11:29:19
sed这个工具比grep复杂一点,功能比grep复杂一点 功能也能指定匹配的行,不能颜色显示 sed 基础功能 [root@wangshaojun ~]# sed -n '10'p 1.txt uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin 不加-n 第十行出现两遍 p打印的意思 可以指定范围 1到10行 [root@wangshaojun ~]# sed -n '1,10'p 1.txt .... 共10行 从25行到结尾 [root@wangshaojun ~]# sed -n '25,$'p 1.txt ....$ 匹配指定关键词root的行 [root@wangshaojun ~]# sed -n '/root/'p 1.txt root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin 和egrep的意思一样 一个字符 [root@wangshaojun ~]# sed -n '/r.o/'p 1.txt ..... 0个或多个r [root@wangshaojun ~]# sed -n '/r*o/'p 1.txt ..... 0个或1个r [root@wangshaojun ~]# sed -n '/r\?o/'p 1.txt

shell入门-sed-2替换功能

故事扮演 提交于 2020-03-14 11:27:24
sed的替换功能和vim语法挺像的 把1到10行的nologin替换成login [root@wangshaojun ~]# sed '1,10s/nologin/login/g' 1.txt root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/login daemon:x:2:2:daemon:/sbin:/sbin/login .... vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin saslauth:x:499:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin $ 把1到10行的/sbin/nologin改成login [root@wangshaojun ~]# sed '1,10s/\/sbin\/nologin/login/g' 1.txt [root@wangshaojun ~]# sed '1,10s#/sbin/nologin#login#g' 1.txt [root@wangshaojun ~]# sed '1,10s@/sbin/nologin@login@g' 1.txt

在centos7(EL7.3 即 kernel-3.10.0-514.X )上安装BCM4312无线网卡驱动要注意的问题

北城以北 提交于 2020-03-13 14:56:49
broadcom bcm4312为比较老的无线网卡了,在centos7.7上默认是驱动不起来的。需要手动编译安装。按照centos官方的说法很多网卡都需要重新编译驱动后才能正常运行。包括: Broadcom Corporation BCM4311, BCM4312, BCM4313, BCM4321, BCM4322, BCM43224, BCM43225, BCM43227 and BCM43228 Based Wireless NICs 在安装过程中参考了几位大神的文章(文章链接附后)在执行make过程遇到各种个这样的问题,就是执行不下去,总结起来有两点:一是大神门的文章没有细看,二是,官方补丁更新、步骤也有所更新,三是,基于针对报错选择方案。 以下过程结合了几位大神文章和官方文档,写下来供后来的同道中人参考。 1.识别网卡的型号 执行lspci | grep '802' 官方: [user@host ~]$ /sbin/lspci | grep Broadcom 0b:00.0 Network controller: Broadcom Corporation BCM4312 802.11a/b/g (rev 01) 2.确认kernel-headers kernel-devel gcc是否已经安装 rpm -qa kernel-headers kernel-devel gcc