linux指令 sed指令怎么选择列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux指令 sed指令怎么选择列相关的知识,希望对你有一定的参考价值。

首先我这边先建一个字母大小转换的脚本test2.sh,内容如下:

先介绍些sed -n的应用:
sed命令中p能实现打印匹配行的功能。我们可以实际看下sed命令带-n和不带-n情况下有什么不同。
sed -n "1p" test2.sh:带-n选项的话,只打印test2.sh脚本第一行匹配行。
sed "1p" test2.sh:不带-n的话,不仅打印第一行匹配行,还打印输出test2.sh脚本的全部内容。

sed -n还可以打印文件的范围,比如打印test2.sh脚本的前两行,我们就可以执行以下命令:sed -n "1,2p" test2.sh,就可以直接打印前两行。
sed命令可以打印匹配模式行,比如打印test2.sh脚本匹配tr的行,就可以执行以下命令:
sed -n /tr/p test2.sh。
remark:如果不带-n的话,除了打印匹配行外,还会打印脚本的全部内容。

sed -e的应用。只有当sed命令传递多个编辑命令式,才会使用到-e。比如:我想打印/tr/匹配行,并且打印匹配行所在的行号,此时存在多个sed参数,就要用到-e了。
sed -n -e /tr/p -e /tr/= test2.sh
每个参数前都要带上-e:

sed a\追加命令,命令格式为:sed ’指定地址a\追加内容‘ 目标文件
这个追加内容在匹配行的下一行,只会输出到标准输出,原文件内容是不变的,例如在test2.sh脚本的/tr/所在的匹配行的下一行添加“#hello”内容,可需要执行:
sed '/tr/a\#hello' test2.sh
一定不要忘记单引号.
还有一个sed i\的追加命令,命令格式为:sed ’指定地址i\追加内容‘ 目标文件,跟a\不同,i\追加是在指定位置的上一行追加命令

sed命令中还有一些特殊的匹配,比如元字符匹配,此时需要用转义符"\"屏蔽其特殊意义。
比如:sed -n ‘/\=/p’test2.sh,则打印输出tr一行。
$在正则表达式中表示尾行,执行sed -n ‘$p’ test2.sh则打印脚本尾行。
!表示取反,可以看以下两个例子

sed中可以使用关键字来匹配行,打印我们所需要的内容,比如,我希望打印test2.sh第2,3行,可以执行:sed -n "2,3P" test2.sh,也可以执行sed -n "/tr/,/exit/p" test2.sh

sed c\的应用,命令格式为:sed ’指定地址c\替换内容‘ 目标文件。比如,#hello,替换test2.sh脚本的tr这行,可以执行命令:sed '/tr/c\#hello' test2.sh

sed删除d应用:比如我想删除test2.sh的第2行,可以执行以下命令:sed "2d" test2.sh或者sed /tr/d test2.sh

sed替换s应用:格式 sed s/被替换的字符/替换字符/[替换选项]
比如,我想把test2.sh中tr替换成大写的tr,则可以执行以下命令:sed ‘s/tr/TR/’test2.sh,则把脚本中的tr替换成TR,完后输出全部内容。
如果仅想打印替换所在行,则需要试用使用-n和-p:sed -n ‘s/tr/TR/p’ test2.sh:把脚本中的tr替换成TR,然后打印tr所在的行.
如果脚本中存在好几个tr,并且每一行也存在多个tr,如果执行以上命令的话,只会更改每一行的第一个出现的tr,如果要全部把tr转后为TR,则需要添加G参数:
sed -n ’S/tr/TR/pg’test2.sh。
w参数是定向输入参数,比如要把上述的变更定向输出到test1.txt中,则需要执行:
sed -n ’s/tr/TR/pgw test1.txt’ test2.sh。
也可以直接把选定的匹配内容写到另一个文本中,比如想把test2.sh中tr这一样写到test2.txt中,执行:sed -n ’/tr/w test2.txt‘ test2.sh
参考技术A sed 编辑器是 Linux 系统管理员的工具包中最有用的资产之一
Linux 操作系统最大的一个好处是它带有各种各样的实用工具。存在如此之多不同的实用工具,几乎不可能知道并了解所有这些工具。可以简化关键情况下操作的一个实用 工具是 sed。它是任何管理员的工具包中最强大的工具之一,并且可以证明它自己在关键情况下非常有价值。

sed 实用工具是一个“编辑器”,但它与其它大多数编辑器不同。除了不面向屏幕之外,它还是非交互式的。这意味着您必须将要对数据执行的命令插入到命令行或要处 理的脚本中。当显示它时,请忘记您在使用 Microsoft Word 或其它大多数编辑器时拥有的交互式编辑文件功能。sed 在一个文件(或文件集)中非交互式、并且不加询问地接收一系列的命令并执行它们。因而,它流经文本就如同水流经溪流一样,因而 sed 恰当地代表了流编辑器。它可以用来将所有出现的 "Mr. Smyth" 修改为 "Mr. Smith",或将 "tiger cub" 修改为 "wolf cub"。流编辑器非常适合于执行重复的编辑,这种重复编辑如果由人工完成将花费大量的时间。其参数可能和一次性使用一个简单的操作所需的参数一样有限, 或者和一个具有成千上万行要进行编辑修改的脚本文件一样复杂。sed 是 Linux 和 UNIX 工具箱中最有用的工具之一,且使用的参数非常少。

Linux学习教程Linux中Sed命令如何使用?

  sed是一项Linux指令,也是Linux中的重要命令之一,在文本处理方面有着非常重要的作用,可处理文本的行与列。那么sed是什么?Linux中sed命令如何使用?具体内容请看下文:

  sed是什么?

  Sed是一项Linux指令,全称是Stream EDitor,功能同awk类似,差别在于,sed简单,对列处理的功能要差一些,awk的功能复杂,对列处理的功能比较强大。Sed主要用于自动编辑一个或者多个文件,多用于脚本中对文件的处理。

  Sed命令可以对文件进行增加、删除、修改和查找操作,所以学好sed命令是写自动化脚本必须的基础之一。

  调用sed命令有两种形式:

  sed [options] \'command\' file(s)

  sed [options] -f scriptfile file(s)

  sed命令主要选项

  -e command,--expression=command允许多台编辑。

  -h,--help打印帮助,并显示bug列表的地址。

  -n,--quiet,--silent取消默认输出。

  -f,--filer=script-file引导sed脚本文件名。

  -V,--version打印版本和版权信息。

  命令:

  a\\在当前行后面加入一行文本。

  b label分支到脚本中带有标记的地方,如果分支不存在则分支到脚本的末尾。

  c\\用新的文本改变本行的文本。

  d 从模板块位置删除行。

  D 删除模板块的第一行。

  i\\在当前行上面插入文本。

  h拷贝模板块的内容到内存中的缓冲区。

  H 追加模板块的内容到内存中的缓冲区。

  g 获得内存缓冲区的内容,并替代当前模板块中的文本。

  G 获得内存缓冲区的内容,并追加到当前模板块文本的后面。

  l 列表不能打印字符的清单。

  n 读取下一个输入行,用下一个命令处理新的行而不是用第一个命令。

  N 追加下一个输入行到模板块后面并在二者间嵌入一个新行,改变当前行号码。

  p 打印模板块的行。

  P 打印模板块的第一行。

  q 退出Sed。

  r file从file中读行。

  t labelif分支,从最后一行开始,条件一旦满足或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。

  T label错误分支,从最后一行开始,一旦发生错误或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。

  w file写并追加模板块到file末尾。

  W file写并追加模板块的第一行到file末尾。

  ! 表示后面的命令对所有没有被选定的行发生作用。

  s/re/string 用string替换正则表达式re。

  = 打印当前行号码。

  # 把注释扩展到下一个换行符以前。

以上是关于linux指令 sed指令怎么选择列的主要内容,如果未能解决你的问题,请参考以下文章

Linux学习教程Linux中Sed命令如何使用?

自学linux指令分析-sed

Linux指令-sed

linux 中用 sed 指令 删除/添加 指定行首内容

Linux系统常用指令grepsed 和 awk

Linux系统常用指令grepsed 和 awk