Bash 如何删除以另一个完整单词开头的所有单词
我需要查一本字典,删除所有以另一个完整单词开头的单词--“attic”,例如,以“at”开头的单词,所以我想删除它。我编写了一个bash脚本:Bash 如何删除以另一个完整单词开头的所有单词,bash,Bash,我需要查一本字典,删除所有以另一个完整单词开头的单词--“attic”,例如,以“at”开头的单词,所以我想删除它。我编写了一个bash脚本: while read p; do sed -i "/^$p./d" words.txt.tmp done < words.txt.tmp 读取p时;做 sed-i“/^$p./d”words.txt.tmp 完成
while read p; do
sed -i "/^$p./d" words.txt.tmp
done < words.txt.tmp
读取p时;做
sed-i“/^$p./d”words.txt.tmp
完成
但一分钟后,它仍然在a的,这是不好的。有更有效的方法吗?您可以使用
grep-v
过滤模式。您可以使用进程替换将^
放在单词列表中每个单词的开头,并将其用作模式文件
grep -v -f <(sed 's/.*/^&./' words.txt.tmp) words.txt.tmp > words.txt.filtered
grep-v-f words.txt
您可以使用grep-v
过滤模式。您可以使用进程替换将^
放在单词列表中每个单词的开头,并将其用作模式文件
grep -v -f <(sed 's/.*/^&./' words.txt.tmp) words.txt.tmp > words.txt.filtered
grep-v-f words.txt