📅  最后修改于: 2023-12-03 15:20:03.543000             🧑  作者: Mango
sed
用另一个文件中的内容替换文件中的单词在 Shell-Bash 环境下, sed
是一个非常强大的文本处理工具,它可以处理文件、管道、重定向等 IO 操作,常见的用途如替换、删除和插入等操作。
本文将介绍如何使用 sed
从另一个文件中读取内容,并将其用于在文件中替换单词。
首先我们需要准备一个文本文件,该文件包含我们想要替换的单词列表。比如我们可以把这个文件命名为 words.txt
,里面写上以下内容:
cat
dog
bird
这里我们列出了三个单词,分别是 cat
、dog
和 bird
。
sed
替换单词假设我们有一个文件 original.txt
,里面写着以下内容:
The quick brown fox jumps over the lazy dog.
The cat in the hat.
I have a bird in my hand.
我们现在想把这个文件中包含在 words.txt
的单词替换成另一个单词 REPLACED
。我们可以使用以下的 sed
命令来实现:
sed "s/\<$(tr '\n' '|' < words.txt)\>REPLACED/g" original.txt
这个命令的含义:
sed
表示我们要用 sed
命令处理文本;s
表示我们要进行替换操作;\<
和 \>
是正则表达式的特殊符号,表示单词的开始和结束;$(tr '\n' '|' < words.txt)
是一个命令替换,它执行了一个 tr
命令,把 words.txt
中的每个单词用 |
连接起来,得到类似 cat|dog|bird
的字符串;REPLACED
是我们想要替换成的新单词;/g
表示替换所有匹配的单词。执行上述命令后,文本的输出结果如下:
The quick brown fox jumps over the lazy REPLACED.
The REPLACED in the hat.
I have a REPLACED in my hand.
可以看到,原文本中的单词 cat
、dog
和 bird
都被替换成了 REPLACED
。
如果我们想把替换后的文本保存到一个新文件中,可以使用重定向符 >
和 >>
。其中 >
表示覆盖写入,而 >>
表示追加写入。
例如,我们可以把替换后的文本追加写入一个新文件 new.txt
中:
sed "s/\<$(tr '\n' '|' < words.txt)\>REPLACED/g" original.txt >> new.txt
执行后,新文件 new.txt
中的内容如下:
The quick brown fox jumps over the lazy REPLACED.
The REPLACED in the hat.
I have a REPLACED in my hand.
本文介绍了如何使用 sed
从另一个文件中读取内容,并将其用于在文件中替换单词。我们学习了如何:
sed
命令进行替换操作;这些知识可以帮助我们更加高效地处理文本文件,提高工作效率。