我有一个文件,其中几行以tux
结尾。如何将"
添加到以this
或This
等字词结尾的任何行的末尾?
答案 0 :(得分:1)
您可以访问this site了解更多示例,并提供有关在整体中使用sed的帮助。还要检查它的“正则表达式”选项卡,或在网上搜索“unix anchor characters”之类的内容。
对于这个实际问题,这些是网站的相关部分:
通过在命令之前指定地址,Sed可以指定要检查和/或修改的行。我现在将描述最简单的版本 - / PATTERN /地址。使用时,只有匹配模式的行才会在地址后面给出命令。简而言之,当与/ p标志一起使用时,匹配的行被打印两次:
sed'/ PATTERN / p'文件
当然,PATTERN是任何正则表达式。
根据这些,您可以使用这样的sed命令在文件中以“this”或“This”结尾,如果你的意思是“tux”:
$ sed '/[tT]his$/p' yourfile
或
$ sed '/tux$/p' yourfile
要将双引号放在这些行的末尾,您还需要了解:
...而字符“$”是结束锚。表达式“A $”将匹配以大写字母A结尾的所有行。如果锚点字符未在模式的正确末端使用,则它们不再充当锚点。如果它是最后一个字符,“$”只是一个锚。
Sed有几个命令,但是大多数人只学习替换命令:s。 substitute命令将所有出现的正则表达式更改为新值。一个简单的例子是将“旧”文件中的“day”更改为“new”文件中的“night”:
$ sed's / day / night /'newfile
或另一种方式(对于UNIX初学者),
$ sed's / day / night /'old> new
对于那些想要测试它的人:
$ echo day | sed's / day / night /'
这将输出“night”。
在这些之后,您可以构建自己的sed命令,知道您可以在一个命令中将这两个部分组合在一起,如下所示:
$ sed '/[pP]atternAtTheEndOfLine$/s/$/patternToAddToEndOfTheLine/' yourfile