Linux利用Sed编写关键词过滤程序
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/09 11:55:38
Linux利用Sed编写关键词过滤程序
目前有一个都是关键词的文本文件,格式如下:
keyword1
keyword2
keyword3
想利用sed来写一个关键词过滤程序,如果用多个sed ‘s/.*keyword1.*/********/g’这样的语句就太低效了,更何况关键词列表中有400多个词语,希望用sed匹配列表中每行的内容,但是不知道该怎么写,对sed不是太熟悉,希望很明白sed的高手帮帮忙,
比如我用sed匹配到了一个关键词,然后自动根据字数替换成对应个数的星号,比如keyword替换成7个星号,该怎么写呢?
目前有一个都是关键词的文本文件,格式如下:
keyword1
keyword2
keyword3
想利用sed来写一个关键词过滤程序,如果用多个sed ‘s/.*keyword1.*/********/g’这样的语句就太低效了,更何况关键词列表中有400多个词语,希望用sed匹配列表中每行的内容,但是不知道该怎么写,对sed不是太熟悉,希望很明白sed的高手帮帮忙,
比如我用sed匹配到了一个关键词,然后自动根据字数替换成对应个数的星号,比如keyword替换成7个星号,该怎么写呢?
可能我的思路复杂了.我先提取每个需要的单词然后依次按照字符个数替换的.根据替换单词的复杂度可能有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
再问: 辛苦了,半夜帮我测试… 不过我问题写的不太明白,应该是只要有出现这个列表中词语的句子就会被屏蔽对应的关键词,这都怪我没有说明白,抱歉… 不过问题就这样吧,或许用C语言能更高效一点?我自己慢慢学习吧,谢谢了!
再问: 辛苦了,半夜帮我测试… 不过我问题写的不太明白,应该是只要有出现这个列表中词语的句子就会被屏蔽对应的关键词,这都怪我没有说明白,抱歉… 不过问题就这样吧,或许用C语言能更高效一点?我自己慢慢学习吧,谢谢了!
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
再问: 辛苦了,半夜帮我测试… 不过我问题写的不太明白,应该是只要有出现这个列表中词语的句子就会被屏蔽对应的关键词,这都怪我没有说明白,抱歉… 不过问题就这样吧,或许用C语言能更高效一点?我自己慢慢学习吧,谢谢了!
再问: 辛苦了,半夜帮我测试… 不过我问题写的不太明白,应该是只要有出现这个列表中词语的句子就会被屏蔽对应的关键词,这都怪我没有说明白,抱歉… 不过问题就这样吧,或许用C语言能更高效一点?我自己慢慢学习吧,谢谢了!
Linux利用Sed编写关键词过滤程序
linux sed 的用法
谁能帮忙解释下linux shell程序中的sed "s/$//;s/ *//g;/^$/d"
linux里面的sed命令
linux shell sed表达式分析
linux 关于一个sed命令
linux sed 命令,sed -i 还有红线语句如何解答
关于linux的sed命令的几个问题
linux命令 sed 请问有哪位大大知道这个sed sed 's/\//\\\//g'
LINUX:编写一个shell脚本,并利用函数实现数列求和运算
linux下用sed或者awk处理一个文件
Linux sed或awk取满足条件的行