shell sed脚本速查

删除#删除首行前10个字符sed -i 's/^.\\{10\\}//' test1.txt.bak1# 在每一行后面增加一空行sed G# 将原来的所有空行删除并在每一行后面增加一空行。这样在输出的文本中每一行后面将有且只有一空行。sed '/^$/d;G'# 将第一个脚本所产生的所有空行删除(即删除所有偶数行)sed 'n;d'# 将每一行前导的“空白字符”...
摘要由CSDN通过智能技术生成

 

删除

#删除首行前10个字符
sed -i 's/^.\\{10\\}//' test1.txt.bak1

# 在每一行后面增加一空行
sed G

# 将原来的所有空行删除并在每一行后面增加一空行。这样在输出的文本中每一行后面将有且只有一空行。
sed '/^$/d;G'

# 将第一个脚本所产生的所有空行删除(即删除所有偶数行)
sed 'n;d'

# 将每一行前导的“空白字符”(空格,制表符)删除 使之左对齐
sed 's/^[ t]*//'                # 见本文末尾关于't'用法的描述

# 将每一行拖尾的“空白字符”(空格,制表符)删除
sed 's/[ t]*$//'                # 见本文末尾关于't'用法的描述

# 将每一行中的前导和拖尾的空白字符删除
sed 's/^[ t]*//;s/[ t]*$//'

插入

# 在每一行后面增加两行空行
sed 'G;G'

# 在每一行后面增加两行空行
sed 'G;G'

# 在匹配式样“regex”的行之前插入一空行
sed '/regex/{x;p;x;}'

# 在匹配式样“regex”的行之后插入一空行
sed '/regex/G'

# 在匹配式样“regex”的行之前和之后各插入一空行
sed '/regex/{x;p;x;G;}'

# 在每一行开头处插入5个空格(使全文向右移动5个字符的位置)
sed 's/^/     /'

# 以79个字符为宽度,将所有文本右对齐
sed -e :a -e 's/^.{1,78}$/ &/;ta'  # 78个字符外加最后的一个空格

# 以79个字符为宽度,使所有文本居中。在方法1中,为了让文本居中每一行的前
# 头和后头都填充了空格。 在方法2中,在居中文本的过程中只在文本的前面填充
# 空格,并且最终这些空格将有一半会被删除。此外每一行的后头并未填充空格。
sed -e :a -e "s/^.\\{1,77\\}$/ & /;ta"
sed  -e :a -e 's/^.{1,77}$/ & /;ta'                     # 方法1
sed  -e :a -e 's/^.{1,77}$/ &/;ta' -e 's/( *)1/1/'  # 方法2

编号

# 为文件中的每一行进行编号(简单的左对齐方式)。这里使用了“制表符”(tab,见本文末尾关于't'的用法的描述)而不是空格来对齐边缘。
sed = filename | sed 'N;s/n/t/'

# 对文件中的所有行编号(行号在左,文字右端对齐)。
sed = filename | sed 'N; s/^/     /; s/ *(.{6,})n/1  /'

# 对文件中的所有行编号,但只显示非空白行的行号。
sed '/./=' filename | sed '/./N; s/n/ /'

# 计算行数 (模拟 "wc -l")
sed -n '$='

文本转换和替代

# Unix环境:转换DOS的新行符(CR/LF)为Unix格式。
sed 's/.$//'                     # 假设所有行以CR/LF结束
sed 's/^M$//'                    # 在bash/tcsh中,将按Ctrl-M改为按Ctrl-V
sed 's/x0D$//'                  # ssed、gsed 3.02.80,及更高版本

# Unix环境:转换Unix的新行符(LF)为DOS格式。
sed "s/$/`echo -e \\r`/"        # 在ksh下所使用的命令
sed 's/$'"/`echo \\r`/"         # 在bash下所使用的命令
sed "s/$/`echo \\r`/"           # 在zsh下所使用的命令
sed 's/$/r/'                    # gsed 3.02.80 及更高版本

# DOS环境:转换Unix新行符(LF)为DOS格式。
sed "s/$//"                      # 方法 1
sed -n p                         # 方法 2

# DOS环境:转换DOS新行符(CR/LF)为Unix格式。
# 下面的脚本只对UnxUtils sed 4.0.7 及更高版本有效。要识别UnxUtils版本的
#  sed可以通过其特有的“--text”选项。你可以使用帮助选项(“--help”)看
# 其中有无一个“--text”项以此来判断所使用的是否是UnxUtils版本。其它DOS
# 版本的的sed则无法进行这一转换。但可以用“tr”来实现这一转换。
sed "s/r//" infile >outfile     # UnxUtils sed v4.0.7 或更高版本
tr -d r <infile >outfile        # GNU tr 1.22 或更高版本

==在每一行中查找字串“foo”,并将找到的“foo”替换为“bar”==

sed ':a;$!{N;ba};s/2/4/'  #只替换第一次出现的

sed 's/foo/bar/'                 # 只替换每一行中的第一个“foo”字串
sed 's/foo/bar/4'                # 只替换每一行中的第四个“foo”字串
sed 's/foo/bar/g'                # 将每一行中的所有“foo”都换成“bar”
sed 's/(.*)foo(.*foo)/1bar2/' # 替换倒数第二个“foo”
sed 's/(.*)foo/1bar/'            # 替换最后一个“foo”

# 只在行中出现字串“baz”的情况下将“foo”替换成“bar”
sed '/baz/s/foo/bar/g'

# 将“foo”替换成“bar”,并且只在行中未出现字串“baz”的情况下替换
sed '/baz/!s/foo/bar/g'

# 不管是“scarlet”“ruby”还是“puce”,一律换成“red”
sed 's/scarlet/red/g;s/ruby/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
sed是一种在Linux下非交互式的流式文本编辑器,它可以对文本文件进行增、删、改、查等操作。可以通过在shell脚本中使用sed命令来实现对文本文件的处理。 在给定的引用中,已经提到了sed的基本用法和其在shell脚本中的使用示例。你可以根据需求使用不同的sed命令来实现不同的文本操作。以下是一些常见的sed命令和它们的用法: 1. 替换文本: 使用"s/old-text/new-text/g"命令可以将文本中的"old-text"替换为"new-text",并且"g"表示全局替换。 2. 删除行: 使用"d"命令可以删除指定行数的文本。 3. 插入或添加行: 使用"i"命令可以在指定行之前插入新的行,使用"a"命令可以在指定行之后添加新的行。 4. 查找匹配的行: 使用"/pattern/"命令可以查找包含特定模式的行。 5. 使用正则表达式: sed支持使用正则表达式来匹配和操作文本。你可以使用正则表达式来定义需要匹配的模式。 除了上述提到的基本用法,还有许多其他的sed命令和选项可以用于不同的文本操作。你可以通过阅读sed命令的官方文档来获得更详细的信息和示例。 在给定的引用中,展示了一个使用sed命令的脚本文件的示例。这个脚本用于调整vsftpd服务的配置,禁止匿名用户,允许本地用户,并允许写入。它通过使用sed命令修改配置文件来实现这些配置更改,并使用systemctl命令来启动和设置vsftpd服务。 希望这些信息对你有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值