Linux利用Sed编写关键词过滤程序目前有一个都是关键词的文本文件,格式如下:keyword1keyword2keyword3想利用sed来写一个关键词过滤程序,如果用多个sed ‘s/.*keyword1.*/********/g’这样的语句就太低效

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/09 23:38:27

Linux利用Sed编写关键词过滤程序目前有一个都是关键词的文本文件,格式如下:keyword1keyword2keyword3想利用sed来写一个关键词过滤程序,如果用多个sed ‘s/.*keyword1.*/********/g’这样的语句就太低效
Linux利用Sed编写关键词过滤程序
目前有一个都是关键词的文本文件,格式如下:
keyword1
keyword2
keyword3
想利用sed来写一个关键词过滤程序,如果用多个sed ‘s/.*keyword1.*/********/g’这样的语句就太低效了,更何况关键词列表中有400多个词语,希望用sed匹配列表中每行的内容,但是不知道该怎么写,对sed不是太熟悉,希望很明白sed的高手帮帮忙,
比如我用sed匹配到了一个关键词,然后自动根据字数替换成对应个数的星号,比如keyword替换成7个星号,该怎么写呢?

Linux利用Sed编写关键词过滤程序目前有一个都是关键词的文本文件,格式如下:keyword1keyword2keyword3想利用sed来写一个关键词过滤程序,如果用多个sed ‘s/.*keyword1.*/********/g’这样的语句就太低效

可能我的思路复杂了.我先提取每个需要的单词然后依次按照字符个数替换的.

根据替换单词的复杂度可能有BUG,这个还是根据实际情况分析.

自己调吧.参数$1是文件$2是要替换的单词

#!/bin/bash
NUM='\*'
for KEYWORD in $(grep -oP "((?<=\b)($2[0-9])(?<=\b))" $1)
do
        for ((i=0;i<$(expr $(echo $KEYWORD|wc -c)-1);i++))
        do
            NUM=$(echo -e $NUM*)
        done
        sed -i 's/'$KEYWORD'/'$NUM'/' $1
        NUM='\*'
done