Linux利用Sed编写关键词过滤程序目前有一个都是关键词的文本文件,格式如下:keyword1keyword2keyword3想利用sed来写一个关键词过滤程序,如果用多个sed ‘s/.*keyword1.*/********/g’这样的语句就太低效
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/01 06:20:14
![Linux利用Sed编写关键词过滤程序目前有一个都是关键词的文本文件,格式如下:keyword1keyword2keyword3想利用sed来写一个关键词过滤程序,如果用多个sed ‘s/.*keyword1.*/********/g’这样的语句就太低效](/uploads/image/z/14163449-41-9.jpg?t=Linux%E5%88%A9%E7%94%A8Sed%E7%BC%96%E5%86%99%E5%85%B3%E9%94%AE%E8%AF%8D%E8%BF%87%E6%BB%A4%E7%A8%8B%E5%BA%8F%E7%9B%AE%E5%89%8D%E6%9C%89%E4%B8%80%E4%B8%AA%E9%83%BD%E6%98%AF%E5%85%B3%E9%94%AE%E8%AF%8D%E7%9A%84%E6%96%87%E6%9C%AC%E6%96%87%E4%BB%B6%2C%E6%A0%BC%E5%BC%8F%E5%A6%82%E4%B8%8B%EF%BC%9Akeyword1keyword2keyword3%E6%83%B3%E5%88%A9%E7%94%A8sed%E6%9D%A5%E5%86%99%E4%B8%80%E4%B8%AA%E5%85%B3%E9%94%AE%E8%AF%8D%E8%BF%87%E6%BB%A4%E7%A8%8B%E5%BA%8F%2C%E5%A6%82%E6%9E%9C%E7%94%A8%E5%A4%9A%E4%B8%AAsed+%E2%80%98s%2F.%2Akeyword1.%2A%2F%2A%2A%2A%2A%2A%2A%2A%2A%2Fg%E2%80%99%E8%BF%99%E6%A0%B7%E7%9A%84%E8%AF%AD%E5%8F%A5%E5%B0%B1%E5%A4%AA%E4%BD%8E%E6%95%88)
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/bashNUM='\*'
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