实战基本的Linux sed命令示例代码

Linux流编辑器是在数据中心中运行脚本的一种有用方法。通过这些命令示例,您可以开始熟悉sed。

想要修改文件而不覆盖原始文件的Linux管理员有很多选择,但最有效的工具之一是流编辑器 - sed。

流编辑器是大多数Linux发行版的默认部分。它使您能够使用Linux sed命令在操作系统中执行文本文件操作。

与大多数Linux应用程序一样,sed可以处理管道输入,这使它成为一种有效的脚本工具。您可以将其用作基本的查找和替换工具,如下面的示例命令所示,该命令查找出现的一个实例,并将其替换为两个实例。命令以 /g结束。

sed 's/one/two/g' linuxidc linuxmi

例如,这个Linux sed命令可以帮助您定位和创建配置文件的新版本。当这些函数作为脚本的一部分运行时,它们是可重复的和一致的,并且您可以快速实现更改。

但是sed的主要目的是更改文本文件的内容。它使用了一些重要的命令行开关。/s表示搜索,该命令以/g分隔。-i开关在适当的位置上运行命令——它直接修改文件。

sed -i 's/Port 22/Port 10000/g' /etc/ssh/sshd_config

在此示例中,/etc/ssh/sshd_config文件中Secure Shell服务器中使用的端口号从默认端口22更改为端口10000。

使用Linux sed命令进行文件更改

可以使用sed编辑文件,但有点不满意。 ad hoc编辑可能会导致问题,因为sed无法访问完整的源代码,也无法识别错误或拼写错误。 此外,这样做会使原始文件处于危险之中,因为一旦您更改了原始代码,就无法恢复原始代码。

您可以使用-e开关一次指定多个更改。 同样,sshd_config.conf文件使得更改多行变得简单。 下面的脚本可能看起来很复杂,但操作系统只是传递多个sed更改数据包,每个数据包前缀为-e。

使用sshd_config文件,您可以更改端口号,禁用密码身份验证并一步启用公钥身份验证。

sed -i -e 's/Port 22/Port 10000/g' -e '
s/PermitRootLogin yes/PermitRootLogin no/g' -e '
s/PasswordAuthentication yes/PasswordAuthentication no/g' -e '
s/#PasswordAuthentication no/#PasswordAuthentication no/g' /etc/ssh/sshd_config

搜索和替换功能在新的一行; 用\分解命令不起作用,因为sed将其视为特殊字符。

结合sed中的提示

您还可以将多个Linux sed命令链接在一起以更改应用程序的位置。 手动修改文件路径有很大的错误空间,但自动化它可以使生活更轻松。

用作分隔符的反斜杠可能不适用于某些脚本,但sed允许您更改分隔符。 例如,假设您有一个名为example.conf的日志文件,其中包含以下内容:

logpath = /var/log/mylogfile.log

将此路径更改为/my/alternate/path/newlog.log,您可以使用|作为分隔符,因为/在文件系统路径中不起作用。

sed -i 's|/var/log/mylogfile.log|/my/alternate/path/newlog.log|g' example.conf

使用Linux sed命令的其他方法包括使用^#MyComment为搜索模式添加前缀; 这会搜索以#MyComment开头的行。 您可以在输出端使用它,以便创建一个新行来替换现有的一行。 您还可以使用$字符在行尾查找内容。

要查看更高级的示例,请使用man sed命令。 它提供了更详细的命令和语法分解。

总结

以上所述是小编给大家介绍的实战基本的Linux sed命令示例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • Linux使用sed命令替换字符串教程

    要替换字符串,我们需要使用以下格式. $ sed s/替换的目标字符串/替换后的字符串/ 文件名 在下面我们替换写为"appleorangemelon"的字符串"sample.txt". $ sed s/orange/ORANGE/ sample.txt 执行结果为 appleORANGEmelon 替换并输出字符串. 另外,如下所示,在cat命令后用"|"连接sed命令也能得到同样的结果. $ cat sample.txt | sed s/ap

  • Linux shell利用sed如何批量更改文件名详解

    前言 本文主要给大家介绍了关于Linux shell用sed批量更改文件名的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 示例 去除特定字符 目标:将 2017-01-01.jpg.2018-01-01.jpg 改为 20170101.jpg.20180101.jpg 方法:将所有 - 替换为空 for file in `ls | grep .jpg` do newfile=`echo $file | sed 's/-//g'` mv $file $newfile

  • Linux下通过sed命令对kv方式的配置文件进行修改

    sed是unix下的面向字符流的编辑器,即stream editor, 它是面向行的,以行为单位进行处理,同时,sed是非交互式的,一旦执行便要处理完整个文件. 日常后台服务配置文件多以key-value的方式存在,例如ini文件.toml文件或一些自定义配置文件,当我们某些情况下需要编写自动化脚本对配置文件进行更改的时候,我们可以通过shell的sed命令进行正则匹配快速修改,十分简单快捷,减少很多"高级语言"编写的繁琐,下面主要列出两种比较常见的配置变更情况和命令参考例子: 用于测

  • Linux中 sed 和 awk的用法详解

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

  • Linux 中常用的sed命令

    sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断重复,直到文件末尾.文件内容并没有 改变,除非你使用重定向存储输出.Sed主要用来自动编辑一个或多个文件:简化对文件的反复操作:编写转换程序等. sed的选项.命令.替换标记 命令格式 sed [options

  • 浅谈linux中sed命令和awk命令的使用

    本文主要研究的是linux中sed命令和awk命令的使用的相关内容,具体如下. 1.sed命令:没有重定向不会真正修改源文件中的内容 查询语句 ①sed -n '/sbin/p' passwd 表示查询出passwd文件中存在sbin字符的所有行并打印出来,其中两个/表示的是其中的是正则表达式,-n和/p是该命令的参数,需要联合使用 ②sed -n 'xp' passwd x是数字,表示打印出passwd文件中第x行的数据 新增语句 ①sed '1a 这是第一行后面添加的内容' passwd 其

  • 实战基本的Linux sed命令示例代码

    Linux流编辑器是在数据中心中运行脚本的一种有用方法.通过这些命令示例,您可以开始熟悉sed. 想要修改文件而不覆盖原始文件的Linux管理员有很多选择,但最有效的工具之一是流编辑器 - sed. 流编辑器是大多数Linux发行版的默认部分.它使您能够使用Linux sed命令在操作系统中执行文本文件操作. 与大多数Linux应用程序一样,sed可以处理管道输入,这使它成为一种有效的脚本工具.您可以将其用作基本的查找和替换工具,如下面的示例命令所示,该命令查找出现的一个实例,并将其替换为两个实

  • Linux sed命令的使用

    1.功能简介 sed(Stream EDitor)是一种流文件编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(Pattern Space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕,接着处理下一行,直到文件末尾.文件内容并没有改变,除非使用-i选项.sed主要用来编辑一个或多个文件,简化对文件的反复操作或者用来编写转换程序等. sed功能同awk类似,差别在于,sed简单,对列处理的功能要差一些,awk功能复杂,对列

  • python 使用paramiko模块进行封装,远程操作linux主机的示例代码

    import time import paramiko class HandleParamiko: ''' 定义一个linux处理类 ''' def __init__(self, hostname, password, port=22, username='root'): ''' 构造器 :param hostname: 主机ip,type:str :param password: 密码,type:str :param port: 端口,type:int 默认22 :param username

  • linux sed命令详解(推荐)

    概述 sed命令是一个面向字符流的非交互式编辑器,也就是说sed不允许用户与它进行交互操作.sed是按行来处理文本内容的.在shell中,使用sed来批量修改文本内容是非常方便的. sed命令的选项 sed [选项] [动作] 选项与参数: -n :使用安静(silent)模式.在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上.但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来. -e :直接在命令列模式上进行 sed 的动作编辑:

  • linux expect实现登陆远程主机并执行命令示例代码

    本文主要给大家介绍了关于linux expect实现登陆远程主机并执行命令的相关内容,分享出来供大家参考学习,下面来一看看详细的介绍: 示例代码: #!/bin/bash export cmd=$1 expect << 'END' set cmd "$env(cmd)" spawn ssh root@192.168.56.1 $cmd expect { "(yes/no)?" {send "yes\r";exp_continue} &

  • 一天一个shell命令 linux文本内容操作系列-sed命令详解

    说明: sed是stream editor(流编辑器)的缩写.它能够完美匹配正则表达式.sed和awk是文件编辑最重要的两个命令了.尤其涉及到了很多正则表达式的问题,笔者不敢也有点犯怵,试着写写. 实例: 1.替换文件中的字符串 $sed -i 's/text/replace/g' file #如果不加g结尾,则替换每一行的第一个 #如果只是打印,去掉-i 2.忽略前N处匹配,从N+1出开始替换 $sed -i 's/text/replace/2g' file #在g前面加入数字N 3.移除空白

  • 详解在Linux下9个有用的touch命令示例

    touch 命令用于创建空文件,也可以更改 Unix 和 Linux 系统上现有文件时间戳.这里所说的更改时间戳意味着更新文件和目录的访问以及修改时间. 让我们来看看 touch 命令的语法和选项: 语法: # touch {选项} {文件} touch 命令中使用的选项: 在这篇文章中,我们将介绍 Linux 中 9 个有用的 touch 命令示例. 示例:1 使用 touch 创建一个空文件 要在 Linux 系统上使用 touch 命令创建空文件,键入 touch ,然后输入文件名.如下所

  • 通过python连接Linux命令行代码实例

    这篇文章主要介绍了通过python连接Linux命令行代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 代码如下 #!/usr/bin/python # -*- coding: utf-8 -*- '''https://www.ibm.com/developerworks/cn/linux/l-cn-pexpect2/index.html''' import pexpect import types username = "root&qu

  • linux 使用bond实现双网卡绑定单个IP的示例代码

    双网卡绑定单个IP 地址 为了提供网络的高可用性,我们可能需要将多块网卡绑定成一块虚拟网卡对外提供服务,这样即使其中的一块物理网卡出现故障,也不会导致连接中断. bond在Linux下叫bonding,IBM称为etherchanel,broadcom叫team,但是名字怎么变,效果都是将两块或更多的网卡当做一块网卡使用,在增加带宽的同时也可以提高冗余性. 实现双网卡绑定的方法有两种: bond和team 这里先记下bond的绑定方法 bond支持的模式 共支持bond[0-6]共七种模式,常用

随机推荐