电子说
linuxmi@linuxmi:~/www.linuxmi.com$ echo "Hello World" | sed s/World/LinuxMi.com/
如果您需要进行一些更复杂的编辑,您还可以将 sed 指令组合到文件中。让我们将 A-ha 的“ Take On Me ”的歌词替换为Greg的“I”、“Me”和“My”的每个实例。首先,将歌曲的歌词放入名为linuxmi.com.txt的文本文件中。然后打开您喜欢的文本编辑器,并添加以下行。确保您创建的文件以.sed结尾。
s/I/Greg/
s/Me/Greg/
s/me/Greg/
s/My/Greg/
s/my/Greg/
您可能会注意到上面示例中的重复(例如 s/me/Greg/ 和 s/Me/Greg/)。这是因为 sed 的某些版本,例如 macOS 附带的版本,不支持不区分大小写的匹配。因此,我们必须为每个单词编写两条指令,以便 sed 识别大写和非大写版本。这不会完美地工作,就好像您已经手动替换了“I”、“Me”和“My”的每个实例。请记住,我们只是将其用作练习来演示如何将 sed 指令组合到一个脚本中,然后使用单个命令执行它们。然后,我们需要调用该文件。为此,请运行此命令。
linuxmi@linuxmi:~/www.linuxmi.com$ cat linuxmi.com.txt | sed -f linuxmi.sed
让我们看看这是怎么做的。你可能已经注意到我们这里没有使用 echo。我们使用 cat。这是因为 cat 会打印文件的全部内容,而 echo 只会打印文件名。您可能还注意到,我们使用“-f”标志运行 sed。这告诉它将脚本作为文件打开。
最终结果是这样的:还值得注意的是 sed 支持正则表达式 (REGEX)。这些允许您使用特殊而复杂的语法在文本中定义模式。这是一个如何工作的示例。我们将采用上述歌词,但使用正则表达式打印出每行不以“Take”开头的行。
linuxmi@linuxmi:~/www.linuxmi.com$ cat linuxmi.com.txt | sed /^Take/d
当然,sed 非常有用。而且与 awk 结合使用时会更加强大。
linuxmi@linuxmi:~/www.linuxmi.com$ awk ' length($0) > 20 ' linuxmi.com.txt
linuxmi@linuxmi:~/www.linuxmi.com$ awk 'length($0)>20' linuxmi.com.txt | sed /^Take/d
输出如下:
审核编辑 :李倩
全部0条评论
快来发表一下你的评论吧 !