Linux 基础-----sed工具应用题

处理文本的工具sed
?Stream EDitor, 行编辑器
?sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时
缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的
内容,处理完成后,把缓冲区的内容送往屏幕。然后读入下行,执行下一个循环。
如果没有使诸如‘D’的特殊命令,那会在两个循环之间清空模式空间,但不会清
空保留空间。这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重
定向存储输出。
?功能:主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等
参考

1、删除centos7系统/etc/grub2.cfg文件中所有以空白开头的行行首的空白字符
2、删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#
和空白字符
3、在/etc/fstab文件中不以#开头的行的行首增加#号
4、处理/etc/fstab路径,使用sed命令取出其目录名和基名
5、利用sed 取出ifconfig命令中本机的IPv4地址
6、统计centos安装光盘中Package目录下的所有rpm文件的以.分隔倒数第二个
字段的重复次数
7、统计/etc/init.d/functions文件中每个单词的出现次数,并排序(用grep和
sed两种方法分别实现)
.

1.cat /etc/grub2.cfg |sed -r ‘s/^[[:space:]]+//‘

2.cat /etc/fstab |sed -r ‘s/(^#[[:space:]]?)//‘

3.cat /etc/fstab |sed -r ‘s/^([^#].)/#\1/‘

4.1取文件名:echo "/etc/fstab"| sed ‘[email protected][^/][email protected]@‘

4.2取基名:echo "/etc/fstab"| sed ‘[email protected]
/([^/]+)[email protected]\[email protected]‘


5.*ifconfig ens33|sed -n ‘2p‘|sed ‘s/.inet (.) netmas./\1/‘*

此题方法很多,如下:
ifconfig ens33| sed -r ‘2!d;[email protected](.
inet )(.)( net.)@\[email protected]‘
ifconfig ens33|sed -n ‘2p‘ |sed ‘s/.inet //‘ |sed ‘s/ netmask.//‘

6.ls /misc/cd/Packages/ |grep "rpm$"|sed -r ‘s/..(.).rpm$/\1/‘|sort |uniq -c

7.1sed方法:cat /etc/init.d/functions | sed -r ‘[email protected][^[:alpha:]][email protected]\[email protected]‘|sort |uniq -c|sort -n

7.2grep方法:cat /etc/init.d/functions | grep -o -E "\<[[:alpha:]]+\>"|sort|uniq -c |sort -n

7.3tr 方法:cat /etc/init.d/functions | tr -c ‘[:alpha:]‘ ‘\n‘ |sort|uniq -c|sort -n

此三种方法,大家可以看出,tr和sed的方法理念相一致,均采用补集的思想,将不是字母的字符全部转换为newline,然后再进行统计;而grep -o方法,将每一个单词进行分割,并进行单独分行,后续再进行统计。
三种方法,grep和tr/sed得到的答案不一样,肯定某种方法存在着漏洞。
这个问题目前我没想到解决的方法,希望大神指出
20180412 接引道人

原文地址:http://blog.51cto.com/13698281/2097467

时间: 2024-08-01 00:12:38

Linux 基础-----sed工具应用题的相关文章

Linux:sed工具

1.什么是sed工具 sed意为流编辑器(Stream Editor),在Shell脚本和Makefile中作为过滤器使用非常普遍,也 就是 把前一个程序的输出引入sed的输入,经过一系列编辑命令转换为另一种格式输出.sed 和vi都源于 早期UNIX的ed工具,所以很多sed命令和vi的末行命令是相同的. sed命令行的基本格式为: sed option 'script' file1 file2 ... sed option -f scriptfile file1 file2 ... sed处

linux中sed工具的使用

sed 本身也是一个管线命令,而且 sed 还可以将数据进行取代.删除.新增.撷取特定行等等的功能. $ sed [-nefr] [动作] 选项与参数: -n :使用安静(silent)模式.在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到屏幕上. 但如果加上 -n 参数后,则只有经过 sed 特殊处理的那一行(或者动作)才会被列出来. -e :直接在命令行界面上进行 sed 的动作编辑: -f :直接将 sed 的动作写在一个文件内, -f filename 则可以执行

linux基础--sed编辑器详解

1.sed简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断重复,直到文件末尾.文件内容并没有 改变,除非你使用重定向存储输出.Sed主要用来自动编辑一个或多个文件:简化对文件的反复操作:编写转换程序等. sed默认不编辑源文件,仅对模式空间中的数据作处理.处理结束后,将模式空间打印. 2.命令语法

Linux centos7 sed工具介绍

一.sed上 grep工具功能只能实现查找,不能把查找的内容替换. sed本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行查找.删除.替换字符或字符串.调换字符串位置.直接修改文件内容等特定工作,针对文档的行来操作,例如.txt. [[email protected] ~]# mkdir sed[[email protected] ~]# cd sed[[email protected] sed]# cp ../grep/passwd 0.txt[[email protected]

谢烟客---------Linux之 sed工具使用

sed Stream EDitor 文本流编辑器, 行编辑器 sed工作方式 sed基本使用 格式一: sed [OPTION ...] [SCRIPT] [FILE...] 多个文件处理: 处理完一个,继续处理第二个. sed script file1 --> sed script file2 使用方法基本同vim命令 1)vim % --> sed 不用指明 2)vim @@ ## // --> sed || ,, @@ // 格式二: sed  '地址定界command'  FIL

#linux基础#sed初次接触

sed基本用法: sed:Stream EDitor 流编辑器 行编辑器 每次读取文本的一行到内存空间,这段空间叫做模式空间.默认不编辑原文件,仅对模式空间中的数据做处理,完成后,将模式空间中的内容显示出来. sed [OPTION]... {script-only-if-no-other-script} [input-file]...-n 静默模式,不默认显示模式空间中的内容 -i 直接修改原文件 -e SCRIPT 可同时执行多个脚本 -f /PATH/TO/SED_SCRIPT 从文件读取

linux基础网络工具学习笔记

1.ifconfig interface up/down/mtu/netmask/broadcast ifconfig eth0 192.168.1.1 #不加参数,按照标准A/B/C类自动添加掩码 ifconfig eth0 192.168.100.100 netmask 255.255.252.0 mtu 8000 ifconfig eth0:0 192.168.100.101 #给一张网卡添加多个ip ifconfig的设置在重启网络服务后会失效 ifconfig wl0 up #启动无线

【linux 常用工具总结】sed 工具使用总结

在日常工作中,我们往往会在使用Unix/Linux系统时遇到一些处理复杂文本的情况, 这些文本直接处理可能会比较麻烦,往往会花费我们很多时间,给我们的工作带来一定的困扰.事实上,Unix/linux系统提供了一些强大高效的文本处理工具来帮助我们进行复杂文本的处理, 掌握这些工具的使用可以事半功倍. 本文主要对linux三剑客(sed, awk, grep)之一的sed工具进行介绍,并对该工具的使用进行简单的说明. 1.1  sed工具使用总结 sed, 全称 stream editor, 是一种

Linux基础之文件系统简介及其系统管理工具

常见的文件系统 Linux文件系统: ext2, ext3, ext4, xfs, btrfs, reiserfs, jfs, swap swap: 交换分区 光盘:iso9660 Windows:fat32, ntfs Unix: FFS, UFS, JFS2 网络文件系统:NFS, CIFS 集群文件系统:GFS2, OCFS2 分布式文件系统:ceph, moosefs, mogilefs, GlusterFS, Lustre 实验环境CentOS7.2 Linux根据其是否支持"jour