谢烟客---------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‘  FILE ...

1)地址定界


2)command

例如:
将文件中的内容插入至指定文件中
# sed ‘/^UUID/r /etc/issue‘ /etc/fstab
# sed ‘1,3r /etc/centos-release‘ /etc/issue

例如:
取一个文件的基名、目录名
基名: echo "/etc/sysconfig/useradd/" | sed ‘s,/$,,‘ | sed -r ‘s|(.*/)([^/]+)|\2|‘ 
目录名: echo "/etc/sysconfig/useradd/" | sed ‘s,/$,,‘ | sed -r ‘s|(.*/)([^/]+)|\2|‘

例如:
# echo "how are you" | sed -r ‘s/(how)(.*)(you)/\3\2\1/‘
# echo "how are you" | sed -r ‘[email protected](how)(.*)(you)@\3\2\[email protected]‘
# echo "how are you" | sed -r ‘s#(how)(.*)(you)#\3\2\1#‘
# echo "how are you" | sed -r ‘s,(how)(.*)(you),\3\2\1,‘
# echo "how are you" | sed -r ‘s|(how)(.*)(you)|\3\2\1|‘

例如:
[[email protected] bin]# head -n 1 < /etc/passwd | sed ‘s,root,ROOT,‘
ROOT:x:0:0:root:/root:/bin/bash
[[email protected] bin]# head -n 1 < /etc/passwd | sed ‘s,root,ROOT,g‘
ROOT:x:0:0:ROOT:/ROOT:/bin/bash

例如:
[[email protected] bin]# head -n 1 < /etc/passwd | sed ‘s,rOOt,ROOT,i‘
ROOT:x:0:0:root:/root:/bin/bash
[[email protected] bin]# head -n 1 < /etc/passwd | sed ‘s,rOOt,ROOT,gi‘
ROOT:x:0:0:ROOT:/ROOT:/bin/bash

例如:
[[email protected] bin]# cat < /etc/passwd | sed -n ‘s,rOOt,ROOT,ip‘
ROOT:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/ROOT:/sbin/nologin

# sed ‘s,,,w /PATH/TO/SOMEFILE‘ FILE
# sed ‘s,,,‘ FILE > /PTH/TO/SOMEFILE

练习1:删除/boot/grub/grub.conf文本中所有以空白开头的行行首的空白字符

练习2:删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符

练习3:echo 一个绝对路径给sed命令:取出其基名,取出目录名

练习1:删除/boot/grub/grub.conf文本中所有以空白开头的行行首的空白字符

CentOS 6:
    # cp /boot/grub/grub.conf /tmp/grub.conf
    # sed -i ‘s,^[[:space:]]\+,,‘ /tmp/grub.conf
CentOS 7:
    # cp /etc/grub2.cfg /tmp/grub2.cfg
    # sed -i ‘s,^[[:space:]]\+,,‘ /tmp/grub2.cfg

练习2:删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符

# cp /etc/fstab /tmp/a.file
# sed -i -r ‘s|^#[[:space:]]+||‘ /tmp/a.file

扩展:删除以#开头,后面没有跟空白字符的行的行首的#
	# cp /etc/fstab /tmp/fstab
	# echo "#hello sed" >> /tmp/fstab
	# sed -i -r ‘[email protected]^#([^[:space:]].*)@\[email protected]‘ /etc/fstab

练习3:echo 一个绝对路径给sed命令:取出其基名,取出目录名

测试取出文件名中存在 useradd的绝对路径
	# locate -b useradd
		...
		/usr/share/man/zh_CN/man8/useradd.8.gz
		/usr/share/man/zh_TW/man8/useradd.8.gz
		...

取出/usr/share/man/zh_TW/man8/useradd.8.gz的基名
	# echo "/usr/share/man/zh_TW/man8/useradd.8.gz/" | sed ‘s,/$,,‘ |  sed -r ‘s#(.*/)([^/]+$)#\2#‘

取出/usr/share/man/zh_TW/man8/useradd.8.gz的目录名
	# echo "/usr/share/man/zh_TW/man8/useradd.8.gz" | sed ‘s,/$,,‘ |  sed -r ‘s#(.*/)([^/]+$)#\1#‘

格式三:

sed ‘地址定界command;地址定界command;地址定界command;...‘

时间: 2025-01-06 16:44:43

谢烟客---------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?Stream EDitor, 行编辑器?sed是一种流编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.然后读入下行,执行下一个循环.如果没有使诸如'D'的特殊命令,那会在两个循环之间清空模式空间,但不会清空保留空间.这样不断重复,直到文件末尾.文件内容并没有改变,除非你使用重定向存储输出.?功能:主要用来自动编辑一个或多个文

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

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

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

linux之sed用法

sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为:         sed [-nefri] 'command' 输入文本 常用选项:        -n∶使用安静(silent)模式.在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上.但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来.        -e∶直接在

linux文本处理工具

linux文本处理工具 1.Linux 文件系统上的特殊权限: SUID     SGID   Sticky 进程的安全上下文:(1)任何一个可执行程序文件能不能启动为进程,取决发起者对程序文件是否拥有执行去权限 (2)启动为进程后,其属主为发起者,属组为发起者所属的组 (3)进程访文件的权限,取决于进程的发起者 (a)  进程的发起者,同文件的属主:则应用文件属主权限                                            (b)  进程的发起者,属于文件属组:则

Linux文本处理工具AWK使用解析

在linux系统上有三大文本处理工具分别是:grep,sed,awk,这次主要来看看awk. awk  option  'pattern'  file -F    指定分隔符: -v     申明自定义变量: 查看当前系统上,用户名和用户shell,输出分隔符为~. # awk -F: 'BEGIN{OFS="~";print "UserName   Shell"}{print $1,$7}END{print "================end===

77个常用Linux命令和工具

77个常用Linux命令和工具 Linux管理员不能单靠GUI图形界面吃饭.这就是我们编辑这篇最实用Linux命令手册的原因.这个指南是特别为Linux管理员和系统管理员 设计的,汇集了最有用的一些工具做为他们日常维护的参考手册.通过学习这些简单的工具,那些原本害怕命令行的人也可以变成一个脚本高手,从而通过执行 kernal命令和shell命令来最大限度的发挥linux的作用.请善用我们的指南,有任何Linux方面的问 题或者需要寻找相关答案请务必到我们 的TechTarget中国服务器论坛来发