我有以下问题。
我有一个包含很多单词的文件,我要做的就是在另一个文件中找到这些单词,然后用一个字母替换它们。
我不知道我必须删除的单词(太多了!)所以我不知道如何使用以下 sed 命令
$ sed -i 's/words_old/word_new/g' /home/user/test.txt
但是我认为我还必须使用 cat 命令:
$ cat filewithwordstobedeleted.txt
但我不知道如何将它们结合起来。
感谢你们对我的帮助!:)
法比奥
假设您每行有一个要删除的单词,那么一个简单的 shell 循环可以帮助您:
cat filewithwordstobedeleted.txt | while read word; do
sed -i "s/$word/null/g" /home/user/test.txt
done
请注意,使用cat
并不是绝对必要的,但可以使此示例更易于阅读。
如果您的单词列表是每行一个并且不是很长:
sed -ri "s/$(tr "\n" "|" < filewithwordstobedeleted.txt | head -c-1)/null/g" /home/user/test.txt
这可能对您有用(GNU sed):
# cat <<\! >/tmp/a
> this
> that
> those
> !
cat <<\! >/tmp/b
> a
> those
> b
> this
> c
> that
> d
> !
sed 's|.*|s/&/null/g|' /tmp/a
s/this/null/g
s/that/null/g
s/those/null/g
sed 's|.*|s/&/null/g|' /tmp/a | sed -f - /tmp/b
a
null
b
null
c
null
d
cat <<\! >/tmp/c
> a
> this and that and those
> b
> this and that
> c
> those
> !
sed 's|.*|s/&/null/g|' /tmp/a | sed -f - /tmp/c
a
null and null and null
b
null and null
c
null